<<set $gameVersion to "v0.4">> <!-- Defina a versão do seu jogo aqui! -->
<div class="enhanced-title-container"> <!-- Novo container principal -->
<img src="img/utils/banner/banner.png" alt="A Weekend With Aunt Carol Banner" class="title-banner">
<h1 class="game-main-title">A Weekend with Aunt Carol</h1>
<div class="game-version-display">
<<print $gameVersion>>
</div>
<div class="title-menu-options"> <!-- Novo container para os botões -->
[[Begin->Prologue]]
[[Credits]]
<!-- Adicione outros links aqui se necessário, como Load, Options, etc. -->
</div>
</div><<set $player to {
energy: 100,
money: 50,
lust: 0,
intelligence: 5,
strength: 5,
charisma: 5,
luck: 0,
inventory: [],
running: 0,
cardio: 0,
photography: 0,
observation: 0,
animalCare: 0,
athleticism: 0,
flexibility: 0
}>>
<<set $dailyActivities to {
running: {
limit: 2,
count: 0
},
photography: {
limit: 2,
count: 0
},
observationParkLake: {
limit: 2,
count: 0
},
feedDucks: {
limit: 1,
count: 0
},
playBasketball: {
limit: 2,
count: 0
},
yogaParkCourt: {
limit: 2,
count: 0
},
gymTraining: {
limit: 1,
count: 0
},
gymCardio: {
limit: 1,
count: 0
},
studyLibrary: {
limit: 1,
count: 0
}
}>>
<<set $auntCarol to {
love: 0,
corruption: 0,
caring: 50,
domination: 0,
locationSchedule: {
Kitchen: { start: 8, end: 11 },
LivingRoom: { start: 13, end: 22 },
BedroomCarol: { start: 22, end: 6 },
Pool: { start: 11, end: 14 },
Bathroom: { start: 7, end: 8 }
},
interactions: {
talk: {
limit: 2,
stats: { love: 5, lust: 2 },
passage: "TalkAuntCarol"
},
flirt: {
limit: 1,
stats: { love: 3, lust: 5, corruption: 2 },
passage: "FlirtAuntCarol"
}
},
dailyInteractions: {
talk: 0,
flirt: 0
}
}>>
<<set $neighborAngela to {
love: 0,
corruption: 0,
locationSchedule: {
AngelaHouse: { start: 8, end: 10 },
AngelaHouseGarden: { start: 10, end: 12 }
},
interactions: {
talk: {
limit: 2,
stats: { love: 5, lust: 1 },
passage: "TalkAngela"
},
compliment: {
limit: 1,
stats: { love: 4, lust: 3, corruption: 1 },
passage: "ComplimentAngela"
}
},
dailyInteractions: {
talk: 0,
compliment: 0
}
}>>
<<set $storeSkylar to {
love: 0,
corruption: 0,
locationSchedule: {
LocalStore: { start: 9, end: 17 }
},
interactions: {
talk: {
limit: 2,
stats: { love: 3, lust: 1 },
passage: "TalkSkylar"
},
flirt: {
limit: 1,
stats: { love: 2, lust: 4, corruption: 1 },
passage: "FlirtSkylar"
}
},
dailyInteractions: {
talk: 0,
flirt: 0
}
}>>
<<set $openWorldGirls to {
"brandi": {
name: "Brandi",
love: 0,
lust: 0,
corruption: 0,
face: "img/chars/brandi/face/brandi_face.jpg",
weeklySchedule: {
"Monday": {
"Gym": { start: 9, end: 11, lines: ["Ugh, do you mind? I'm trying to focus on my glutes.", "I pay a premium for this gym to avoid... distractions.", "Don't stare. It's rude."] },
"LivingRoomBrandi": { start: 13, end: 16, lines: ["My decorator is coming later, so please don't mess up the feng shui.", "I'm meditating on my stock portfolio. It's more complex than your life.", "Could you be a little quieter? I can hear you breathing from here."] },
"PoolBrandi": { start: 16, end: 18, lines: ["This is a private pool, not a public one.", "The water is perfectly heated. Don't ruin the temperature.", "I hope you're not planning on getting in."] },
"BedroomBrandi": { start: 22, end: 6, lines: ["Get out. Now.", "This is my sanctuary. You're trespassing.", "Do I need to call security?"] }
},
"Tuesday": {
"Mall": { start: 10, end: 14, lines: ["Retail therapy is the only therapy that works.", "Oh, you shop here too? How quaint.", "I'm looking for something that screams 'I'm richer than you'."] },
"GardenBrandi": { start: 15, end: 17, lines: ["My gardener is a genius, isn't he?", "These are imported Dutch tulips. They're probably worth more than your shirt.", "The HOA president loves my garden. Of course."] },
"KitchenBrandi": { start: 18, end: 20, lines: ["I'm preparing a single, nutritionally-perfect almond.", "My husband is flying the chef in next week. This is just... temporary.", "Don't touch the countertops. They're Italian marble."] },
"BedroomBrandi": { start: 22, end: 6, lines: ["I'm trying to sleep. Go away.", "Are you deaf? I said get out.", "My husband will hear about this."] }
},
"Wednesday": {
"LivingRoomBrandi": { start: 9, end: 12, lines: ["I'm on a conference call with Zurich. Be quiet.", "This is where I conduct my business. Important business.", "Could you fetch me my Pellegrino? No, the other one."] },
"PoolBrandi": { start: 14, end: 16, lines: ["I'm working on my tan. It's a full-time job.", "This bikini costs more than your education.", "I can feel you staring. Stop it."] },
"BarGildedLily": { start: 19, end: 22, lines: ["A real man would have offered to buy me a drink by now.", "The bartender here knows my order. A 'Disdain on the Rocks'.", "I come here to be seen, not to be bothered by the help."] },
"BedroomBrandi": { start: 23, end: 6, lines: ["Seriously? Again? Get the hell out!", "I'm calling the police. I mean it this time.", "You have five seconds to disappear."] }
},
"Thursday": {
"Gym": { start: 10, end: 12, lines: ["I'm on set three of twelve. Do not interrupt.", "My personal trainer says my form is perfect. Obviously.", "Is this the only treadmill you could find?"] },
"Mall": { start: 14, end: 17, lines: ["Just returning something that wasn't exclusive enough.", "I need a new handbag. This one is from last season.", "I can see you following me. It's pathetic."] },
"LivingRoomBrandi": { start: 18, end: 21, lines: ["Watching my shows. They're about rich people, you wouldn't understand.", "Shhh! This is the part where she reveals she's her own evil twin.", "If you're going to stand there, at least make yourself useful and dust something."] },
"BedroomBrandi": { start: 22, end: 6, lines: ["Final warning.", "You're starting to scare me. In a boring way.", "Don't make me use my self-defense training."] }
},
"Friday": {
"LivingRoomBrandi": { start: 11, end: 15, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
"PoolBrandi": { start: 15, end: 17, lines: ["A pre-evening dip is essential.", "Can you see any imperfections? No? Good.", "I'm visualizing world peace. Or a new diamond bracelet. Same thing."] },
"BarGildedLily": { start: 20, end: 23, lines: ["Look at this place. Full of wannabes.", "My husband should be here. He's... busy.", "Another one? Don't mind if I do. It's on his credit card."] }
},
"Saturday": {
"GardenBrandi": { start: 9, end: 11, lines: ["The weekend sunlight is better for the petunias.", "I'm considering a water feature. Something understated, like a mini-Versailles.", "Hello again. Still loitering?"] },
"PoolBrandi": { start: 12, end: 16, lines: ["Saturday is for swimming laps. Twenty of them. Before lunch.", "This new sunscreen was flown in from France.", "I feel like I'm in a zoo exhibit."] },
"LivingRoomBrandi": { start: 18, end: 23, lines: ["Tonight is movie night. I'm watching a documentary about myself.", "This couch is for sitting elegantly, not for slouching.", "Could you fluff my pillows? No, not like that!"] },
"BedroomBrandi": { start: 23, end: 6, lines: ["You're persistent, I'll give you that. And creepy.", "Okay, what do you want?", "Just... don't touch anything."] }
},
"Sunday": {
"KitchenBrandi": { start: 10, end: 12, lines: ["I'm making a detox smoothie. It tastes like despair, but it works.", "Sunday brunch. Just me and my thoughts.", "Are you hungry? There's tap water."] },
"PoolBrandi": { start: 13, end: 17, lines: ["Sundays are for quiet contemplation and minimal clothing.", "Don't you have your own pool to look at?", "I might fall asleep. Don't try anything."] },
"BedroomBrandi": { start: 18, end: 6, lines: ["I'm reading. It's a book about powerful women. You wouldn't like it.", "Don't interrupt. The protagonist is about to execute a hostile takeover.", "Fine. You can stay for a minute. One minute."] }
}
},
interactions: { "talk": { limit: 2, stats: { love: 1, lust: 1, corruption: 1 }, passage: "BrandiTalk" }, "flirt": { limit: 1, stats: { love: 2, lust: 3, corruption: 2 }, passage: "BrandiFlirt" } },
dailyInteractions: { talk: 0, flirt: 0 },
randomLines: [
"I was just about to do something important. What do you want?",
"Try not to breathe so loudly. It's distracting.",
"Is there a point to you being here, or are you just... existing in my general vicinity?",
"I have a thousand things on my mind. You wouldn't understand a single one.",
"Don't touch anything. Everything here costs more than your car.",
"I swear, if you track dirt in here, I'll send you the cleaning bill.",
"Can I help you, or are you just lost?",
"I'm trying to maintain a certain... ambiance. You're disrupting it.",
"Oh, it's you again. My day was going so well.",
"Whatever you're thinking of asking, the answer is probably no."
],
},
"valerie": {
name: "Valerie",
love: 0,
lust: 0,
corruption: 0,
face: "img/chars/valerie/face/valerie_face.jpg",
weeklySchedule: {
"Monday": { "KitchenValerie": { start: 8, end: 10, lines: ["Good morning! Making some herbal tea, it aligns the chakras.", "The universe provides such wonderful flavors, don't you think?", "Want a cup? It'll help you feel the morning's energy."] }, "GardenValerie": { start: 10, end: 13, lines: ["I'm just talking to the plants. They have so much wisdom to share.", "Feel that connection to the Earth? It's so grounding.", "This little sprout is a fighter. I admire its spirit."] }, "LivingRoomValerie": { start: 13, end: 18, lines: ["The light in here is perfect for painting this afternoon.", "I'm working on a piece about spiritual longing. It's very... abstract.", "Just let the colors speak to you. What do you see?"] }, "PoolValerie": { start: 18, end: 20, lines: ["A sunset swim is like a baptism for the soul.", "The water holds memories, you know.", "Just floating... becoming one with everything."] }, "BedroomValerie": { start: 22, end: 7, lines: ["Time to dream. The astral plane awaits.", "Goodnight. May your dreams be full of cosmic truth.", "The scent of lavender helps guide the spirit."] } },
"Tuesday": { "LivingRoomValerie": { start: 9, end: 12, lines: ["Just finishing up my morning yoga. Salutations to the sun!", "This pose really opens up the heart chakra.", "Breathing in peace, breathing out negativity. Join me?"] }, "PoolValerie": { start: 12, end: 15, lines: ["The midday sun energizes the water, and me!", "I love the feeling of sun on my skin. It's so... primal.", "Just letting go of all earthly attachments for a while."] }, "GardenValerie": { start: 15, end: 18, lines: ["Weeding is a form of meditation, you know. Clearing out the old to make way for the new.", "This soil has such a good, earthy smell.", "I think I'll plant some chamomile here. For peace."] }, "KitchenValerie": { start: 18, end: 20, lines: ["Making a big vegetarian stew. It's food for the soul.", "The secret ingredient is love. And a little bit of paprika.", "There's plenty to share if you're hungry."] }, "BedroomValerie": { start: 22, end: 7, lines: ["Writing in my dream journal. Last night was a trip.", "The moon is so bright tonight.", "Goodnight, stardust."] } },
"Wednesday": { "BedroomValerie": { start: 9, end: 11, lines: ["Just doing some morning stretches in my sacred space.", "It's important to start the day with intention.", "I was just reading about past lives. Fascinating stuff."] }, "KitchenValerie": { start: 11, end: 13, lines: ["Lunchtime! A nice big salad with ingredients from the garden.", "You can really taste the life force in fresh vegetables.", "It's all about nourishing the body and the spirit."] }, "LivingRoomValerie": { start: 13, end: 19, lines: ["I'm trying a new pottery technique. It's very... sensual, working with the clay.", "Feel this? It's taking shape. Becoming what it's meant to be.", "Art is just channeled energy, really."] }, "BathroomValerie": { start: 19, end: 20, lines: ["A nice warm bath with essential oils to end the day.", "I'm using eucalyptus tonight. For clarity.", "The sound of water is so calming."] }, "BedroomValerie": { start: 21, end: 7, lines: ["Time to meditate before sleep.", "Another day, another cycle of the universe.", "Sleep well. Let the universe guide you."] } },
"Thursday": { "GardenValerie": { start: 8, end: 11, lines: ["Good morning, little flowers!", "I'm repotting my ferns today. They needed more room to grow.", "Isn't it amazing how life just... finds a way?"] }, "PoolValerie": { start: 11, end: 14, lines: ["Floating on my back, just watching the clouds. It's better than any screen.", "The water feels different today. More... thoughtful.", "Come on in! The water's perfect."] }, "LivingRoomValerie": { start: 14, end: 21, lines: ["I've got some good music on. It's very... tribal. Feel the rhythm?", "Sometimes you just have to dance like nobody's watching.", "I'm just sketching. Trying to capture the essence of a feeling."] }, "BedroomValerie": { start: 22, end: 7, lines: ["Goodnight. I hope the stars are kind to you tonight.", "Time to let the subconscious take over.", "I feel a powerful dream coming on."] } },
"Friday": { "LivingRoomValerie": { start: 10, end: 14, lines: ["Friday has such a vibrant energy, doesn't it?", "I'm working on a big, colorful canvas today. Very expressive.", "Just throwing paint around and seeing what happens. It's liberating!"] }, "GardenValerie": { start: 14, end: 17, lines: ["Harvesting some herbs for the weekend.", "This mint smells divine. Nature's perfume.", "I should make you a little sachet for good vibes."] }, "PoolValerie": { start: 17, end: 19, lines: ["A sunset swim is the perfect way to welcome the weekend.", "The colors are just... wow.", "It's so peaceful right now."] }, "KitchenValerie": { start: 19, end: 21, lines: ["Making some homemade pasta tonight. Want to help me roll the dough?", "It's so much better when you make it with your own hands.", "A little wine, a little pasta... the perfect Friday night."] }, "BedroomValerie": { start: 23, end: 7, lines: ["What a wonderful day. I feel so... aligned.", "Goodnight. May you find what you're looking for in your dreams.", "The universe is singing tonight."] } },
"Saturday": { "KitchenValerie": { start: 9, end: 11, lines: ["Pancakes! It's a pancake kind of morning.", "You can't be sad when you're eating pancakes. It's a cosmic law.", "Maple syrup or blueberry compote?"] }, "PoolValerie": { start: 11, end: 15, lines: ["The best way to spend a Saturday afternoon.", "Just soaking up the good vibes and the sun.", "I could stay here all day."] }, "LivingRoomValerie": { start: 15, end: 22, lines: ["I'm reading tarot cards. The universe has a message for me.", "The High Priestess... interesting. A day of intuition.", "Want me to read your cards? Be warned, they don't lie."] }, "BedroomValerie": { start: 23, end: 8, lines: ["The energy of the weekend is intense. Time to recharge.", "Goodnight. See you in the dreamscape.", "I'm leaving my window open to let the moonlight in."] } },
"Sunday": { "GardenValerie": { start: 10, end: 12, lines: ["Just some light gardening. A Sunday ritual.", "The bees are so busy today. They're an inspiration.", "Everything is so green and alive."] }, "LivingRoomValerie": { start: 12, end: 17, lines: ["A lazy Sunday afternoon. Perfect for reading and listening to music.", "I'm just enjoying the stillness.", "Sometimes the most productive thing you can do is nothing at all."] }, "PoolValerie": { start: 17, end: 19, lines: ["One last dip before the week begins.", "Washing away the last of the weekend's lazy energy.", "The water is so quiet and reflective now."] }, "BedroomValerie": { start: 21, end: 7, lines: ["Preparing my spirit for the week ahead.", "Goodnight. May you have peaceful dreams.", "And so, another cycle ends... and begins."] } }
},
interactions: { "talk": { limit: 3, stats: { love: 3, lust: 1 }, passage: "ValerieTalk" }, "flirt": { limit: 2, stats: { love: 2, lust: 4, corruption: 1 }, passage: "ValerieFlirt" } },
dailyInteractions: { talk: 0, flirt: 0 },
randomLines: [
"I was just pondering the interconnectedness of all things. What's on your spirit's mind?",
"The energy in here feels a little different today, don't you think?",
"Remember to take a deep breath. The universe is sending you exactly what you need.",
"I just had the most interesting thought about cosmic dust...",
"Hello there, fellow traveler. How is your journey today?",
"I feel like the universe wanted us to cross paths right at this moment.",
"Are you feeling centered today? It's important to stay grounded.",
"I was just listening to the silence. It has so much to say.",
"What a beautiful moment. We should be grateful for these simple gifts.",
"I'm sending you good vibrations. Can you feel them?"
],
},
"kenzie": {
name: "Kenzie",
love: 0,
lust: 0,
corruption: 0,
rebellion: 10,
face: "img/chars/kenzie/face/kenzie_face.jpg",
weeklySchedule: {
"Monday": { "BedroomKenzie": { start: 8, end: 12, lines: ["Ugh, Monday. Leave me alone.", "I'm busy. Doing... stuff.", "Can't you see I have headphones on?"] }, "LocalStore": { start: 14, end: 16, lines: ["Just grabbing some snacks. The good kind, not my mom's rabbit food.", "Yeah, I know Skylar. She's cool.", "Are you following me or something?"] }, "LivingRoomValerie": { start: 18, end: 21, lines: ["Mom's making me watch some weird foreign film with her.", "This is so boring. Can we put on a real movie?", "Hi. Don't mind me, just suffering."] }, "BedroomKenzie": { start: 21, end: 7, lines: ["Finally, some peace. I'm gaming.", "Don't come in, I'm in the middle of a raid!", "Goodnight. Or whatever."] } },
"Tuesday": { "BedroomKenzie": { start: 9, end: 13, lines: ["I'm listening to music. It's probably too loud for you.", "It's a new band. You've probably never heard of them.", "Do you need something? I'm kind of in the zone."] }, "Park": { start: 15, end: 17, lines: ["Just getting out of the house. Mom's incense gives me a headache.", "Yeah, I come here sometimes. It's... okay.", "Trying to find a spot where nobody will bother me."] }, "KitchenValerie": { start: 19, end: 20, lines: ["Looking for actual food. Not 'tofu scramble'.", "There's leftover pizza in the back. My stash.", "You want some? Fine, but you owe me."] }, "BedroomKenzie": { start: 20, end: 7, lines: ["Watching some streamer. She's hilarious.", "No, you can't watch with me. It's... a private stream.", "Later."] } },
"Wednesday": { "BedroomKenzie": { start: 10, end: 15, lines: ["It's my day to do absolutely nothing. It's an art form.", "Just scrolling through memes. It's a living.", "Can I help you? If not, the door is that way."] }, "LivingRoomValerie": { start: 15, end: 18, lines: ["Mom's trying to teach me pottery. I made an ashtray.", "It's kinda cool, I guess. Messy.", "Don't look at my work! It's not finished."] }, "BedroomKenzie": { start: 18, end: 7, lines: ["Okay, for real, I'm busy tonight.", "My friends are online. Go away.", "Just... get out."] } },
"Thursday": { "Mall": { start: 13, end: 17, lines: ["Just hanging out. Seeing if any of my friends are here.", "This place is so lame, but it's better than being at home.", "Are you stalking me? It's starting to feel like you're stalking me."] }, "LivingRoomValerie": { start: 19, end: 22, lines: ["Ugh, family TV night. Kill me now.", "Yeah, my mom's cool, but she has terrible taste in shows.", "Can you change the channel when she's not looking?"] }, "BedroomKenzie": { start: 22, end: 7, lines: ["Don't even think about it.", "I'm locking my door tonight.", "Goodnight."] } },
"Friday": { "BedroomKenzie": { start: 11, end: 16, lines: ["Getting ready to go out. This is a process, you can't rush it.", "Does this top look okay? Don't answer that, I don't care what you think.", "I need to find my other shoe. Have you seen it?"] }, "Park": { start: 16, end: 18, lines: ["Meeting up with some friends here before we head out.", "Just waiting for them. They're always late.", "You're not my friend. Why are you talking to me?"] }, "BarRustyMug": { start: 20, end: 23, lines: ["My friend's older brother got us in. It's cool, right?", "Don't tell my mom you saw me here, okay? Seriously.", "This beer tastes like crap. But it's about the experience, you know?"] }, "BedroomKenzie": { start: 23, end: 8, lines: ["The room is spinning. Ugh.", "I'm never drinking again. Probably.", "Get me some water?"] } },
"Saturday": { "PoolValerie": { start: 12, end: 15, lines: ["Mom forced me to come out for some 'vitamin D'.", "It's so bright out here. I need my sunglasses.", "The water's okay, I guess. If you're into that."] }, "Mall": { start: 16, end: 20, lines: ["I need a new video game. This is a life or death situation.", "Just browsing. Trying to look cool.", "Why are you always here when I'm here?"] }, "BedroomKenzie": { start: 20, end: 8, lines: ["Okay, Saturday night. New game. Do not disturb.", "I'm going to be up all night pwning noobs.", "If the house is on fire, slide a note under the door."] } },
"Sunday": { "BedroomKenzie": { start: 11, end: 17, lines: ["I'm recovering from last night. My everything hurts.", "Just watching videos in bed. Don't judge me.", "Can you close the door on your way out? The light... it burns."] }, "KitchenValerie": { start: 18, end: 19, lines: ["I need carbs. All of them. Now.", "Is there any real food in this house?", "Mom's trying to make me drink a kale smoothie. It's an act of war."] }, "LivingRoomValerie": { start: 19, end: 22, lines: ["Fine, I'll watch one movie with her. But I get to pick.", "No, we are not watching another foreign film about sad people.", "Can you grab me a blanket? I'm cold."] }, "BedroomKenzie": { start: 22, end: 8, lines: ["Okay, the weekend's over. Thank god.", "I need to mentally prepare for Monday.", "Goodnight. Don't let the bed bugs bite."] } }
},
interactions: { "talk": { limit: 3, stats: { love: 2, lust: 1 }, passage: "KenzieTalk" }, "flirt": { limit: 2, stats: { love: 1, lust: 5, corruption: 2, rebellion: 1 }, passage: "KenzieFlirt" }, "smoke": { limit: 1, stats: { love: 3, lust: 2, corruption: 3, rebellion: 2 }, passage: "KenzieSmoke", requires: { location: ["GardenValerie", "Park"] } } },
dailyInteractions: { talk: 0, flirt: 0, smoke: 0 },
randomLines: [
"Ugh, what now?",
"Don't you have something better to do?",
"I'm in the middle of a very important... scroll. Don't interrupt.",
"If you're looking for my mom, she's probably meditating at a plant or something.",
"This house is so boring. I'm dying of boredom.",
"Can you not? I'm trying to concentrate on literally anything else.",
"Are you lost or just wandering around aimlessly?",
"Yeah, hi. Whatever.",
"Just so you know, I can hear you from here. My headphones aren't even on.",
"Did you need something, or are you just enjoying the awkward silence?"
],
},
"jenna": {
name: "Jenna",
love: 0,
lust: 0,
corruption: 0,
loneliness: 70,
face: "img/chars/jenna/face/jenna_face.jpg",
weeklySchedule: {
"Monday": { "LivingRoomJenna": { start: 7, end: 8, lines: ["Good morning. Just my daily yoga to start the day.", "It's important to stay centered, especially when you're alone a lot.", "This pose helps with balance. Both physical and mental."] }, "Gym": { start: 9, end: 11, lines: ["Gotta get my workout in. No excuses!", "I love the feeling of a good sweat session. Makes me feel alive.", "Just focusing on my form today."] }, "KitchenJenna": { start: 12, end: 13, lines: ["Post-workout protein shake. It's all about the gains.", "Meal prep is key to staying on track.", "It's just grilled chicken and broccoli. Again."] }, "GardenJenna": { start: 14, end: 16, lines: ["A little bit of sun and fresh air does wonders.", "My husband loves these roses. I try to keep them nice for when he's back.", "It's so quiet out here."] }, "PoolJenna": { start: 16, end: 18, lines: ["A few laps to cool down. It's great for cardio.", "The water feels so good on tired muscles.", "Just swimming and thinking."] }, "LivingRoomJenna": { start: 19, end: 22, lines: ["Time to relax with a movie. It's better than staring at the walls.", "I've seen this one a dozen times. It's comforting.", "It gets so quiet at night."] }, "BedroomJenna": { start: 22, end: 7, lines: ["Time to turn in. Another day down.", "Goodnight. It was... nice seeing someone today.", "Sometimes the bed feels so big..."] } },
"Tuesday": { "LivingRoomJenna": { start: 7, end: 8, lines: ["Morning yoga again. Consistency is everything.", "Just trying to clear my head for the day.", "Deep breaths... in and out."] }, "Gym": { start: 9, end: 11, lines: ["Leg day. The best and worst day of the week.", "Feel the burn! That's how you know it's working.", "Could you... check my form on this squat?"] }, "KitchenJenna": { start: 12, end: 13, lines: ["Another healthy lunch. It gets a little boring.", "I should try a new recipe sometime. But it's a lot of effort for one person.", "More water. Hydration is key."] }, "LivingRoomJenna": { start: 14, end: 17, lines: ["I'm trying to read this new book. It's hard to focus sometimes.", "It's a romance novel. A girl can dream, right?", "The house is always so tidy. Nothing ever moves."] }, "PoolJenna": { start: 17, end: 19, lines: ["Just floating. It's nice to feel weightless.", "I love watching the sky change colors from the water.", "It's so peaceful... almost too peaceful."] }, "LivingRoomJenna": { start: 20, end: 22, lines: ["Trying to find something good to watch on TV.", "So many channels and nothing on.", "I miss having someone to argue with over the remote."] }, "BedroomJenna": { start: 22, end: 7, lines: ["Another day, another night alone.", "Goodnight. Sleep well.", "I hope he calls tomorrow."] } },
"Wednesday": { "LivingRoomJenna": { start: 7, end: 8, lines: ["Time for yoga. It's my routine.", "Just stretching and breathing.", "It's a good way to start the day on a positive note."] }, "Gym": { start: 9, end: 11, lines: ["Arm day! Gotta keep toned.", "Do you work out much? It's a great stress reliever.", "I think I'll try the rowing machine today."] }, "KitchenJenna": { start: 12, end: 13, lines: ["Making a smoothie. It's quick and easy.", "Sometimes I just don't have the energy to cook a full meal.", "This one has spinach. You can't even taste it. Mostly."] }, "GardenJenna": { start: 15, end: 17, lines: ["Weeding the flower beds. It's surprisingly therapeutic.", "These pesky weeds just keep coming back.", "A little bit of hard work in the sun is good for the soul."] }, "LivingRoomJenna": { start: 18, end: 22, lines: ["I'm catching up on my favorite series.", "It's nice to get lost in someone else's drama for a while.", "Want to watch an episode with me?"] }, "BedroomJenna": { start: 22, end: 7, lines: ["Well, goodnight.", "Another day over.", "Hope tomorrow is a little more exciting."] } },
"Thursday": { "LivingRoomJenna": { start: 7, end: 8, lines: ["Yoga time. It's a non-negotiable part of my morning.", "Feeling a good stretch today.", "Namaste."] }, "Gym": { start: 9, end: 11, lines: ["Cardio day. Thirty minutes on the elliptical.", "Just trying to get my heart rate up.", "Music is essential for a good cardio session."] }, "KitchenJenna": { start: 12, end: 13, lines: ["Just a light salad for lunch today.", "It's all about clean eating.", "Sometimes I wish I could just order a pizza."] }, "PoolJenna": { start: 14, end: 17, lines: ["The pool is my happy place.", "Just doing some light exercises in the water. It's low-impact.", "It's so quiet and peaceful here."] }, "LivingRoomJenna": { start: 18, end: 22, lines: ["I think I'll just listen to some music tonight.", "Sometimes TV is too much noise.", "It's nice to just sit and be."] }, "BedroomJenna": { start: 22, end: 7, lines: ["Goodnight. See you tomorrow.", "Time to recharge.", "Another lonely night."] } },
"Friday": { "LivingRoomJenna": { start: 7, end: 8, lines: ["Last yoga session of the week. Gotta make it count.", "I feel so energized after this.", "Ready for the weekend. Or, as ready as I can be."] }, "Gym": { start: 9, end: 11, lines: ["Full body workout today, to kick off the weekend.", "It feels good to push myself.", "Maybe I'll go for a personal best today."] }, "KitchenJenna": { start: 12, end: 13, lines: ["Treating myself to a slightly more interesting lunch today.", "Still healthy, but with... flavor.", "It's Friday, after all."] }, "PoolJenna": { start: 14, end: 16, lines: ["A quick dip before I get ready to go out.", "Gotta wash off all that gym sweat.", "The water feels amazing."] }, "BathroomJenna": { start: 18, end: 19, lines: ["Just getting ready. It takes a while to look this... effortless.", "Do you think this dress is too much?", "A little makeup can make you feel like a new person."] }, "BarGildedLily": { start: 20, end: 23, lines: ["I come here with my girlfriends sometimes. It's nice to get out.", "Just having a glass of wine and enjoying the atmosphere.", "It's nice to feel like a normal person for a night."] }, "BedroomJenna": { start: 23, end: 7, lines: ["What a night. It was good to get out.", "Now I'm exhausted.", "Goodnight."] } },
"Saturday": { "LivingRoomJenna": { start: 8, end: 9, lines: ["A nice, relaxed Saturday morning yoga session.", "No rush today. Just enjoying the movement.", "It's nice to not have a strict schedule."] }, "Gym": { start: 10, end: 12, lines: ["A weekend workout is the best kind of workout.", "The gym is always more crowded on Saturdays.", "Just doing my thing."] }, "KitchenJenna": { start: 13, end: 14, lines: ["Making a big brunch. It's my Saturday tradition.", "I always make too much for one person.", "Want some? There's plenty."] }, "PoolJenna": { start: 15, end: 19, lines: ["This is what Saturdays are for. Just lounging by the pool.", "I could spend all day out here with a good book.", "The sun feels incredible."] }, "LivingRoomJenna": { start: 20, end: 23, lines: ["Saturday night movie night!", "I'm watching a comedy. I need a good laugh.", "Popcorn is mandatory. It's the law."] }, "BedroomJenna": { start: 23, end: 8, lines: ["What a perfect, lazy day.", "I feel so relaxed.", "Goodnight. Sweet dreams."] } },
"Sunday": { "LivingRoomJenna": { start: 8, end: 9, lines: ["A very gentle yoga flow to ease into Sunday.", "Just being mindful and present.", "It's a beautiful morning."] }, "GardenJenna": { start: 10, end: 12, lines: ["Just deadheading the roses and enjoying the quiet.", "It's so peaceful out here on a Sunday morning.", "The garden is my happy place."] }, "KitchenJenna": { start: 13, end: 14, lines: ["Prepping some healthy meals for the week ahead.", "It makes the weekdays so much easier.", "It's a little bit of work now for a lot of peace later."] }, "LivingRoomJenna": { start: 15, end: 22, lines: ["The Sunday scaries are starting to kick in.", "Just trying to relax and not think about Monday.", "I think I'll just read and listen to music until bed."] }, "BedroomJenna": { start: 22, end: 7, lines: ["Well, the weekend's over.", "Time to face another week.", "Goodnight. I hope it's a good week."] } }
},
interactions: { "talk": { limit: 3, stats: { love: 3, loneliness: -2 }, passage: "JennaTalk" }, "flirt": { limit: 2, stats: { love: 2, lust: 3, corruption: 1, loneliness: -1 }, passage: "JennaFlirt" }, "coffee": { limit: 1, stats: { love: 5, loneliness: -5 }, passage: "JennaCoffee", requires: { location: ["KitchenJenna", "LivingRoomJenna"] } } },
dailyInteractions: { talk: 0, flirt: 0, coffee: 0 },
randomLines: [
"Oh, hello. I was just... thinking about my to-do list.",
"It's so quiet in this house sometimes, isn't it?",
"Just trying to stay busy. It's the best way.",
"Another day, another set of routines to get through.",
"I should probably be doing something more productive right now.",
"It's funny, you get used to the silence after a while.",
"Did you need something? I was just about to start my next task.",
"This house feels so big when it's just one person.",
"I hope I'm not in your way.",
"It's... nice to see another person. Breaks up the monotony."
],
},
// "chloe": {
// name: "Chloe",
// love: 0,
// lust: 0,
// corruption: 0,
// rivalry: 10,
// face: "img/chars/chloe/face/chloe_face.jpg",
// weeklySchedule: {
// "Monday": { "ParkTrail": { start: 7, end: 9, lines: ["Gotta get my morning run in, no matter what.", "Trying to beat my personal best today.", "You're either getting faster or I'm getting slower. Let's hope it's the first one."] }, "KitchenChloe": { start: 9, end: 10, lines: ["Oatmeal and a protein shake. Breakfast of champions.", "Fueling up for the day.", "It's not about taste, it's about macros."] }, "Gym": { start: 14, end: 16, lines: ["Working on my upper body today. Can't skip the small muscles.", "You here to lift or to watch?", "Don't get in my way, I'm in the zone."] }, "BedroomChloe": { start: 18, end: 7, lines: ["Studying. Even athletes have to hit the books.", "Just reviewing my training logs.", "I need to rest. Recovery is as important as the workout."] } },
// "Tuesday": { "ParkTrail": { start: 7, end: 9, lines: ["Interval training today. It's brutal, but effective.", "Feel the burn!", "Come on, keep up!"] }, "CoffeeShop": { start: 10, end: 12, lines: ["Just a black coffee. No sugar, no cream, no weakness.", "I'm meeting my coach here later.", "This is my one vice for the day."] }, "LivingRoomChloe": { start: 17, end: 21, lines: ["Stretching and foam rolling. It hurts so good.", "You gotta take care of your body if you want it to perform.", "Just watching some pro-athlete documentaries for motivation."] }, "BedroomChloe": { start: 21, end: 7, lines: ["Early to bed, early to rise. That's the motto.", "I need a solid eight hours.", "Goodnight. Don't be slow tomorrow."] } },
// "Wednesday": { "Gym": { start: 8, end: 10, lines: ["Leg day. Again. There's no escaping it.", "Squats, lunges, deadlifts. The holy trinity.", "I'm probably not going to be able to walk tomorrow."] }, "KitchenChloe": { start: 12, end: 13, lines: ["Refueling. Lots of protein, lots of carbs.", "Eating is part of the training.", "This tastes like victory."] }, "Library": { start: 14, end: 17, lines: ["I have a paper due. Even I have to study.", "It's so quiet in here. It's weird.", "I'm reading about kinesiology. It's actually pretty interesting."] }, "BedroomChloe": { start: 19, end: 7, lines: ["Just relaxing. My legs feel like jelly.", "I'm probably just going to pass out.", "See ya."] } },
// "Thursday": { "ParkTrail": { start: 7, end: 9, lines: ["A nice, easy recovery run today.", "Just getting the blood flowing.", "It's a beautiful morning for a run."] }, "CoffeeShop": { start: 10, end: 12, lines: ["Grabbing another coffee. Don't tell my coach.", "I like the smell of this place.", "Just people-watching. It's interesting."] }, "Gym": { start: 16, end: 18, lines: ["Back at it. Core work today.", "A strong core is the foundation of everything.", "Feel those abs burn!"] }, "BedroomChloe": { start: 20, end: 7, lines: ["Just chilling tonight. Listening to some pump-up music for tomorrow.", "Visualizing success.", "Time to rest up."] } },
// "Friday": { "Gym": { start: 9, end: 11, lines: ["Last hard workout of the week. Let's go!", "Pushing my limits today.", "No pain, no gain, right?"] }, "LivingRoomChloe": { start: 13, end: 16, lines: ["Just relaxing on the couch. I earned it.", "I might actually watch a movie that isn't about sports.", "It's nice to just do nothing for a change."] }, "Mall": { start: 17, end: 19, lines: ["I need new running shoes. These ones are getting worn out.", "Just browsing the sports stores.", "Maybe I'll get a new workout outfit too."] }, "BarRustyMug": { start: 21, end: 23, lines: ["My one cheat night of the week.", "Just having a light beer with some friends.", "Don't tell anyone you saw me here!"] }, "BedroomChloe": { start: 23, end: 8, lines: ["What a week. I'm beat.", "Time to crash.", "Goodnight."] } },
// "Saturday": { "ParkTrail": { start: 9, end: 11, lines: ["A long, slow run to kick off the weekend.", "This is more for my head than for my body.", "The park is so nice on Saturdays."] }, "KitchenChloe": { start: 12, end: 14, lines: ["Making a big post-run brunch.", "I'm starving!", "Pancakes. I earned these pancakes."] }, "PoolLuxury": { start: 15, end: 18, lines: ["My friend Cassandra let me use her pool. It's amazing.", "Just doing some light swimming. It's good for recovery.", "This is the life."] }, "BedroomChloe": { start: 20, end: 8, lines: ["Just watching some TV and relaxing.", "I should probably go to bed early, but it's Saturday.", "What a good day."] } },
// "Sunday": { "LivingRoomChloe": { start: 10, end: 14, lines: ["Lazy Sunday. Just lounging and reading a magazine.", "It's nice to have a day with no training schedule.", "I'm not moving from this couch."] }, "ParkLakeBench": { start: 15, end: 17, lines: ["Just enjoying the view and the fresh air.", "It's so peaceful here.", "A good place to think."] }, "KitchenChloe": { start: 18, end: 20, lines: ["Making a healthy dinner to get ready for the week.", "Meal prep Sunday!", "It's not glamorous, but it's necessary."] }, "BedroomChloe": { start: 20, end: 7, lines: ["Getting my gear ready for my morning run.", "The week starts now, really.", "Time to get some sleep."] } }
// },
// interactions: { "talk": { limit: 3, stats: { love: 2, rivalry: -1 }, passage: "ChloeTalk" }, "flirt": { limit: 2, stats: { love: 1, lust: 4, rivalry: 1 }, passage: "ChloeFlirt" }, "challenge": { limit: 1, stats: { love: 3, lust: 2, rivalry: 3 }, passage: "ChloeChallenge", requires: { location: ["ParkTrail", "Gym", "ParkCourts"] } } },
// dailyInteractions: { talk: 0, flirt: 0, challenge: 0 }
// },
// "cassandra": {
// name: "Cassandra",
// love: 0,
// lust: 0,
// corruption: 0,
// respect: 0,
// face: "img/chars/cassandra/face/cassandra_face.jpg",
// weeklySchedule: {
// "Monday": { "Gym": { start: 8, end: 12, lines: ["Alright, listen up! Form is everything!", "Stop slacking! I want to see you sweat!", "Did you come here to work out or to socialize?"] }, "KitchenCassandra": { start: 13, end: 14, lines: ["Fueling the machine. Chicken and rice.", "You are what you eat. Don't be cheap, easy, or fast.", "Hydration is not a suggestion, it's a command."] }, "Gym": { start: 15, end: 19, lines: ["Now it's my turn. Don't get in my way.", "This is where I build my temple.", "Pain is just weakness leaving the body. Embrace it."] }, "BedroomCassandra": { start: 21, end: 7, lines: ["My body needs to recover. Do not disturb.", "Sleep is part of the training regimen.", "Goodnight. Be stronger tomorrow."] } },
// "Tuesday": { "PoolLuxury": { start: 8, end: 10, lines: ["Morning laps. It's a full-body workout.", "The water provides perfect resistance.", "This is how you start a day with power."] }, "Gym": { start: 11, end: 18, lines: ["I have back-to-back clients today. It's going to be a long day.", "I live to push people past their limits.", "You want results? You have to earn them."] }, "LivingRoomCassandra": { start: 20, end: 22, lines: ["Reviewing my clients' progress. Some are disappointing.", "I'm designing a new workout plan.", "There is no room for excuses."] }, "BedroomCassandra": { start: 22, end: 7, lines: ["Exhausted. But it's a good kind of exhausted.", "Time to rest and rebuild.", "See you at the gym."] } },
// "Wednesday": { "Gym": { start: 9, end: 13, lines: ["Let's go, let's go, let's go! Move it!", "Your body can do more than your mind thinks it can. Prove it.", "Are you going to cry? Good. Crying means you're trying."] }, "Mall": { start: 14, end: 16, lines: ["I need new workout gear. The best, of course.", "Function over fashion. But a little fashion doesn't hurt.", "Just picking up some more supplements."] }, "Gym": { start: 17, end: 20, lines: ["A quick evening session. No days off.", "The iron never lies.", "This is my church."] }, "BedroomCassandra": { start: 22, end: 7, lines: ["Another productive day. Satisfying.", "My muscles are sore. I love it.", "Goodnight."] } },
// "Thursday": { "Gym": { start: 8, end: 12, lines: ["Alright, maggots! Time to work!", "I don't care if you're tired. Your muscles don't care.", "Give me ten more! Now!"] }, "KitchenCassandra": { start: 13, end: 14, lines: ["Another perfectly balanced meal.", "Abs are made in the kitchen, not just the gym.", "This is the fuel for greatness."] }, "Gym": { start: 15, end: 19, lines: ["Time for me to blow off some steam.", "Lifting heavy shit is my therapy.", "Don't bother me unless you're on fire."] }, "BedroomCassandra": { start: 21, end: 7, lines: ["I need to sleep. Growth happens when you rest.", "Dream of your goals.", "Dismissed."] } },
// "Friday": { "Gym": { start: 9, end: 14, lines: ["Last chance to prove yourself this week. Don't disappoint me.", "The weekend is for the weak.", "Finish strong!"] }, "PoolLuxury": { start: 15, end: 17, lines: ["A relaxing swim to stretch out my muscles.", "The water feels good after a hard week.", "Just enjoying the quiet."] }, "BarGildedLily": { start: 20, end: 23, lines: ["Some of my high-paying clients come here. It's good for business.", "I'll have a vodka soda. Clean and efficient.", "I'm just observing. Analyzing weaknesses."] }, "BedroomCassandra": { start: 23, end: 8, lines: ["The weekend officially begins now. Which means I plan my workouts.", "Rest up. You'll need it.", "Goodnight."] } },
// "Saturday": { "Gym": { start: 10, end: 15, lines: ["The weekend warriors are here. Pathetic.", "I'm here to work, not to play.", "You want to train on a Saturday? That shows dedication. I respect that."] }, "LivingRoomCassandra": { start: 17, end: 22, lines: ["Watching old bodybuilding competitions. The golden era.", "Arnold was a god.", "This is what true dedication looks like."] }, "BedroomCassandra": { start: 22, end: 8, lines: ["A quiet Saturday night. Perfect.", "I'm going to bed early. Big day tomorrow.", "Dismissed."] } },
// "Sunday": { "GardenLuxury": { start: 10, end: 12, lines: ["Outdoor yoga. It's good to connect with nature.", "Flexibility is a form of strength.", "The sun on my skin feels amazing."] }, "PoolLuxury": { start: 13, end: 16, lines: ["Just relaxing by the pool today. Even I need a rest day.", "Reading a book on anatomy.", "It's a beautiful day."] }, "LivingRoomCassandra": { start: 17, end: 21, lines: ["Planning the week ahead. Every workout, every meal.", "Success doesn't happen by accident. It's planned.", "I am in control."] }, "BedroomCassandra": { start: 21, end: 7, lines: ["The calm before the storm.", "Time to get my mind right for the week.", "Goodnight. Be ready to work."] } }
// },
// interactions: { "talk": { limit: 2, stats: { love: 1, respect: 1 }, passage: "CassandraTalk" }, "flirt": { limit: 1, stats: { lust: 3, respect: -1 }, passage: "CassandraFlirt" }, "askForTraining": { limit: 1, stats: { love: 2, lust: 2, respect: 3 }, passage: "CassandraAskTraining", requires: { location: ["Gym"] } } },
// dailyInteractions: { talk: 0, flirt: 0, askForTraining: 0 }
// },
// "roxy": {
// name: "Roxy",
// love: 0,
// lust: 15,
// corruption: 30,
// trust: 0,
// face: "img/chars/roxy/face/roxy_face.jpg",
// weeklySchedule: {
// "Monday": { "BedroomRoxy": { start: 12, end: 18, lines: ["Ugh, the sun... it burns. Let me sleep.", "What do you want? I'm trying to recover.", "Five more minutes... or five more hours."] }, "KitchenRoxy": { start: 18, end: 19, lines: ["Coffee. Black. Now.", "Breakfast of champions: leftover takeout and regret.", "I need caffeine to function."] }, "VelvetCurtainClub": { start: 20, end: 2, lines: ["Welcome to the Velvet Curtain. Enjoy the show.", "Another night, another dollar.", "Want a dance? It'll cost you."] }, "BedroomRoxy": { start: 2, end: 12, lines: ["Finally, home. The smell of cheap perfume and desperation is hard to wash off.", "I'm exhausted. Don't talk to me.", "Just let me sleep."] } },
// "Tuesday": { "BedroomRoxy": { start: 12, end: 17, lines: ["I think I'm still drunk from Saturday.", "Just watching some TV. Something mindless.", "Leave me to my misery."] }, "CoffeeShop": { start: 17, end: 18, lines: ["Just trying to feel like a normal person for an hour.", "This coffee is too expensive, but at least it's not in a strip club.", "Please don't tell anyone you saw me here."] }, "VelvetCurtainClub": { start: 20, end: 2, lines: ["It's a slow Tuesday. Great.", "You again? You must be lonely.", "The music is giving me a headache."] }, "BedroomRoxy": { start: 2, end: 12, lines: ["Another night, another layer of glitter I'll never get rid of.", "My feet are killing me.", "I need a drink. A real one."] } },
// "Wednesday": { "BedroomRoxy": { start: 13, end: 19, lines: ["My day off. Hallelujah.", "I'm not leaving this bed today. It's a sacred space.", "Don't even think about asking me to do anything."] }, "LivingRoomRoxy": { start: 19, end: 23, lines: ["I'm binge-watching some trashy reality show. It's my therapy.", "These people's lives are more messed up than mine. It's comforting.", "Want some popcorn?"] }, "BedroomRoxy": { start: 23, end: 13, lines: ["What a glorious day of doing nothing.", "I feel almost human again.", "Time to sleep for a thousand years."] } },
// "Thursday": { "BedroomRoxy": { start: 12, end: 18, lines: ["Ugh, it's Thursday already? The week is a blur.", "Just trying to mentally prepare for work tonight.", "I should probably clean this place. Nah."] }, "LocalStore": { start: 18, end: 19, lines: ["Just grabbing some essentials. Microwave dinners and energy drinks.", "Skylar is always so cheerful. It's unnerving.", "Don't judge my shopping cart."] }, "VelvetCurtainClub": { start: 20, end: 2, lines: ["The weekend is almost here. You can feel the desperation in the air.", "The tips are usually better on Thursdays.", "You're becoming a regular, huh?"] }, "BedroomRoxy": { start: 2, end: 12, lines: ["My back hurts, my head hurts, everything hurts.", "I need a hot shower. Or a vat of acid.", "Just leave me to die."] } },
// "Friday": { "BedroomRoxy": { start: 12, end: 17, lines: ["It's Friday. The start of the long haul.", "Just trying to conserve my energy for tonight.", "I should have been a librarian."] }, "LivingRoomRoxy": { start: 17, end: 19, lines: ["Putting on my 'work' face. It's all an act, you know.", "A little bit of makeup, a lot of fake smiles.", "Almost showtime."] }, "VelvetCurtainClub": { start: 20, end: 3, lines: ["It's packed tonight. Great for business, terrible for my sanity.", "Smile and wave, boys. Smile and wave.", "You want a private dance? It'll cost you extra on a Friday."] }, "BedroomRoxy": { start: 3, end: 12, lines: ["I smell like a brewery and a perfume factory exploded.", "I'm too tired to even take my makeup off.", "Just... darkness."] } },
// "Saturday": { "BedroomRoxy": { start: 13, end: 18, lines: ["I feel like death warmed over. But it's Saturday, the money night.", "Just trying to eat something that isn't from a vending machine.", "I need more coffee. All of the coffee."] }, "KitchenRoxy": { start: 18, end: 19, lines: ["Trying to cook a real meal. It's probably going to end in disaster.", "How do you even... what's a 'mirepoix'?", "Okay, I'm ordering pizza."] }, "VelvetCurtainClub": { start: 20, end: 4, lines: ["The busiest night of the week. Let's get this over with.", "All these guys... they all have the same hungry look.", "Keep your hands to yourself, buddy."] }, "BedroomRoxy": { start: 4, end: 13, lines: ["I made bank tonight. But at what cost?", "My feet are literally bleeding.", "I'm never getting out of this bed again."] } },
// "Sunday": { "BedroomRoxy": { start: 14, end: 2, lines: ["My one day of true rest. Do not speak to me. Do not look at me. Do not perceive me.", "I am a blanket burrito, and I will not be disturbed.", "Just... silence. Please."] }, "BedroomRoxy": { start: 2, end: 14, lines: ["Still sleeping. Go away.", "I'm hibernating.", "What part of 'do not disturb' did you not understand?"] } }
// },
// interactions: { "talk": { limit: 2, stats: { love: 1, trust: 1 }, passage: "RoxyTalk" }, "flirt": { limit: 3, stats: { lust: 2 }, passage: "RoxyFlirt" }, "buyPrivateDance": { limit: 1, stats: { lust: 5, trust: 2, money: -50 }, passage: "RoxyPrivateDance", requires: { location: ["VelvetCurtainClub"] } } },
// dailyInteractions: { talk: 0, flirt: 0, buyPrivateDance: 0 }
// },
// "Lena": {
// name: "Lena",
// love: 0,
// lust: 0,
// corruption: 0,
// face: "img/chars/brandi/face/brandi_face.jpg",
// weeklySchedule: {
// "Monday": {
// "ParkTrail": { start: 18, end: 22, lines: ["Ugh, do you mind? I'm trying to focus on my glutes.", "I pay a premium for this gym to avoid... distractions.", "Don't stare. It's rude."] },
// "LivingRoomBrandi": { start: 13, end: 16, lines: ["My decorator is coming later, so please don't mess up the feng shui.", "I'm meditating on my stock portfolio. It's more complex than your life.", "Could you be a little quieter? I can hear you breathing from here."] },
// "PoolBrandi": { start: 16, end: 18, lines: ["This is a private pool, not a public one.", "The water is perfectly heated. Don't ruin the temperature.", "I hope you're not planning on getting in."] },
// "BedroomBrandi": { start: 22, end: 6, lines: ["Get out. Now.", "This is my sanctuary. You're trespassing.", "Do I need to call security?"] }
// },
// "Friday": {
// "LivingRoomBrandi": { start: 18, end: 22, lines: ["My decorator is coming later, so please don't mess up the feng shui.", "I'm meditating on my stock portfolio. It's more complex than your life.", "Could you be a little quieter? I can hear you breathing from here."] },
// "KitchenBrandi": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BedroomBrandi": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BedroomGuestBrandi": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BathroomBrandi": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "GardenBrandi": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "PoolBrandi": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "LivingRoomJenna": { start: 18, end: 22, lines: ["My decorator is coming later, so please don't mess up the feng shui.", "I'm meditating on my stock portfolio. It's more complex than your life.", "Could you be a little quieter? I can hear you breathing from here."] },
// "KitchenJenna": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BedroomJenna": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BathroomJenna": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "GardenJenna": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "PoolJenna": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "LivingRoomValerie": { start: 18, end: 22, lines: ["My decorator is coming later, so please don't mess up the feng shui.", "I'm meditating on my stock portfolio. It's more complex than your life.", "Could you be a little quieter? I can hear you breathing from here."] },
// "KitchenValerie": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BedroomValerie": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BedroomKenzie": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "BathroomValerie": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "PoolValerie": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "ParkTrail": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "ParkLakeBench": { start: 18, end: 22, lines: ["I'm planning my weekend. It's very exclusive.", "Should I go to the yacht party or the charity gala? Such difficult choices.", "I need to get my nails done before tonight."] },
// "PoolBrandi": { start: 15, end: 17, lines: ["A pre-evening dip is essential.", "Can you see any imperfections? No? Good.", "I'm visualizing world peace. Or a new diamond bracelet. Same thing."] },
// "BarGildedLily": { start: 20, end: 23, lines: ["Look at this place. Full of wannabes.", "My husband should be here. He's... busy.", "Another one? Don't mind if I do. It's on his credit card."] }
// }
// },
// interactions: { "talk": { limit: 2, stats: { love: 1, lust: 1, corruption: 1 }, passage: "BrandiTalk" }, "flirt": { limit: 1, stats: { love: 2, lust: 3, corruption: 2 }, passage: "BrandiFlirt" } },
// dailyInteractions: { talk: 0, flirt: 0 }
// },
}>>
<<set $randomEncounters to {
// "parkJogger": {
// name: "Jessica",
// face: "img/chars/random/jessica_face.jpg",
// lines: [
// "Ugh, have you seen a tiny white earbud anywhere around here? I think it fell out.",
// "Oh, hey! Sorry, I'm just looking for something I dropped. Don't mind me.",
// "I swear, if I lost another one of these things... Can I help you?"
// ],
// missions: {
// "findLostEarbud": {
// name: "Find Lost Earbud",
// status: 0,
// location: "ParkTrail",
// passage: "JessicaFindEarbud",
// day: ["Monday", "Wednesday", "Friday"],
// period: ["morning"],
// requirements: { type: "stats", intelligence: 10 }
// }
// },
// scenes: {
// "parkGratitude": {
// name: "Park Gratitude",
// status: 0,
// location: "ParkLakeBench",
// passage: "JessicaParkThanks",
// day: ["Monday", "Wednesday", "Friday"],
// period: ["morning", "noon"],
// requirements: { type: "mission", id: "findLostEarbud" }
// }
// }
// },
"gymGirl": {
name: "Tiffany",
face: "img/chars/random/tiffany_face.jpg",
lines: [
"Hey, could you do me a huge favor and spot me on this next set? My usual partner bailed.",
"Whew! Trying for a new personal record here. You look strong, could you give me a spot?",
"Excuse me, I need a spotter. You look like you know your way around a bench. Interested?"
],
missions: {
"spotHerBenchPress": {
name: "Spot Her Bench Press",
status: 0,
location: "Gym",
passage: "TiffanySpotMe",
day: ["Tuesday", "Thursday", "Saturday"],
period: ["afternoon"],
requirements: { type: "stats", strength: 15 }
}
},
scenes: {
"lockerRoomFun": {
name: "Locker Room 'Fun'",
status: 0,
location: "FemaleLockerRoom",
passage: "TiffanyLockerRoom",
day: ["Tuesday", "Thursday", "Saturday"],
period: ["afternoon"],
requirements: { type: "mission", id: "TiffanySpotMe" }
}
}
},
// "fightClubber": {
// name: "Rina",
// face: "img/chars/random/rina_face.jpg",
// lines: [
// "You look lost, pretty boy. This isn't the kind of place you stumble into by accident.",
// "You got the look of a fighter, or maybe just someone with a death wish. What do you want?",
// "First time here? Don't just stand there gawking. Either put some money down or get in the ring."
// ],
// missions: {
// "proveYourWorth": {
// name: "Prove Your Worth",
// status: 0,
// location: "WarehouseFightClub",
// passage: "RinaProveWorth",
// day: ["Friday", "Saturday"],
// period: ["night"],
// requirements: { type: "stats", strength: 20 }
// },
// "getTheGoods": {
// name: "Get The 'Goods'",
// status: 0,
// location: "GhettoAlley",
// passage: "RinaGetTheGoods",
// day: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
// period: ["evening", "night"],
// requirements: { type: "mission", id: "proveYourWorth" }
// }
// },
// scenes: {
// "nakedSparring": {
// name: "Naked Sparring",
// status: 0,
// location: "WarehouseFightClub",
// passage: "RinaNakedSparring",
// day: ["Friday", "Saturday"],
// period: ["night"],
// requirements: { type: "mission", id: "getTheGoods" }
// }
// }
// },
// "lateNightStoner": {
// name: "Stacy",
// face: "img/chars/random/stacy_face.jpg",
// lines: [
// "Whoa, dude. You, like, appeared out of nowhere. Got a light by any chance?",
// "Hey... You're not a cop, are you? You have a weirdly... non-cop-like vibe. Maybe.",
// "Just enjoying the... you know... night air. It's so full of... air. You need something?"
// ],
// missions: {
// "findHerLighter": {
// name: "Find Her Lighter",
// status: 0,
// location: "ParkTrail",
// passage: "StacyFindLighter",
// day: ["Friday"],
// period: ["evening"],
// requirements: { "type": "none" }
// }
// },
// scenes: {}
// },
// "teste": {
// name: "Jessica",
// face: "img/chars/random/jessica_face.jpg",
// lines: [
// "Hey there... Are you lost?",
// "You look like you're looking for something. Or... someone?",
// "I know a shortcut through these woods, if you're interested."
// ],
// missions: {
// "findHerPussy": {
// name: "Find Her Pussy",
// status: 0,
// location: "ParkLakeBench",
// passage: "StacyFindLighter",
// day: ["Friday"],
// period: ["evening"],
// requirements: { "type": "none" }
// }
// },
// scenes: {}
// }
}>>
<<set $period to {
morning: { start: 6, end: 10, label: "Morning" },
noon: { start: 11, end: 13, label: "Noon" },
afternoon: { start: 14, end: 17, label: "Afternoon" },
evening: { start: 18, end: 21, label: "Evening" },
night: { start: 22, end: 5, label: "Night" }
}>>
<<set $days to ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]>>
<<set $actualDay to "Friday">>
<<set $time to 20>>
<<set $keyEvents to {
mainHouseProblemRevealed: false,
openWorldCarolCity: false
}>>
<<set $events to {
"MothersCall": {
name: "Mother's Call",
status: 0,
location: "CarolHouse",
passage: "MotherCall",
period: "evening",
day: "Sunday",
character: "player",
stats:{},
requirements: { type: "scene", id: "EveningFarewellBJ" }
},
"CarolAgreesToStay": { /* Novo evento */
name: "Carol Agrees to Extended Stay",
status: 0,
location: "LivingRoom", /* Onde a conversa provavelmente ocorre */
passage: "TalkToCarolAboutStay",
period: "evening", /* Continuação do evento anterior */
day: "Sunday",
character: "auntCarol", /* Interação principal com Carol */
stats: { love: 15, caring_boost: 5 }, /* Carol ganha amor e um boost em 'caring' */
requirements: { type: "event", id: "MothersCall" } /* Requer que MothersCall tenha ocorrido */
},
"CityIntroductionByCarol": { /* NOVO EVENTO */
name: "Carol Explains City Life",
status: 0,
location: "Bedroom", /* Ocorre no quarto do jogador ao acordar */
passage: "CarolExplainsCityLife",
period: "morning",
day: "Monday", /* Ocorre na segunda-feira */
character: "auntCarol",
stats: { love: 5 }, /* Pequeno bônus por ela ser atenciosa */
requirements: { type: "event", id: "CarolAgreesToStay" } /* Requer que a estadia prolongada tenha sido acordada */
},
"CityIntroductionByCarol": { /* NOVO EVENTO */
name: "Lucky Day",
status: 0,
location: "ParkLakeBench",
passage: "CarolExplainsCityLife",
period: "evening",
day: "Friday",
character: "auntCarol",
stats: { love: 5 },
requirements: { type: "none" }
}
}>>
<<set $dayNumber to 1>>
<<set $missions to {
"001": { name: "Arriving at Aunt Carol's", status: 0, location: "LivingRoom", passage: "Arrival", period: "evening", day: "Friday", character: "auntCarol", stats: { love: 5 }, requirements: { "type": "scene", "id": "Greeting" } },
"002": { name: "Wash Dishes", status: 0, location: "Kitchen", passage: "KitchenChores", period: ["morning", "noon"], day: ["Saturday", "Sunday"], character: "auntCarol", stats: { love: 10, money: 10 }, requirements: { type: "mission", id: "Arrival" } },
"003": { name: "Clean Pool", status: 0, location: "Pool", passage: "PoolChores", period: ["morning", "noon"], day: ["Saturday", "Sunday"], character: "auntCarol", stats: { love: 15, money: 20 }, requirements: { type: "mission", id: "KitchenChores" } },
"004": { name: "Tidy House", status: 0, location: "LivingRoom", passage: "LivingRoomChores", period: ["morning", "noon"], day: ["Saturday", "Sunday"], character: "auntCarol", stats: { love: 10, money: 15 }, requirements: { type: "mission", id: "PoolChores" } },
"005": { name: "Delete Photos", status: 0, location: "BedroomCarol", passage: "DeletePhotos", period: ["noon","afternoon"], day: ["Saturday"], character: "auntCarol", stats: { love: 15, corruption: 5 }, requirements: { type: "scene", id: "Greeting" } },
"006": { name: "Wardrobe Help", status: 0, location: "BedroomCarol", passage: "WardrobeHelp", period: ["noon","afternoon"], day: ["Saturday", "Sunday"], character: "auntCarol", stats: { love: 15, corruption: 10 }, requirements: { type: "mission", id: "DeletePhotos" } },
"007": {
name: "Aunt Carol's Request",
status: 0,
location: "LivingRoom",
passage: "AskPackagePickup",
period: "afternoon",
day: ["Saturday", "Sunday"],
character: "auntCarol",
stats: { love: 5 },
requirements: { type: "mission", id: "WardrobeHelp" }
},
"007.2": {
name: "Pick Up Carol's Package",
status: 0,
location: "LocalStore",
passage: "StorePackagePickup",
period: "afternoon",
day: ["Saturday", "Sunday"],
character: "storeSkylar",
stats: { skylar_love: 3 },
requirements: { type: "mission", id: "AskPackagePickup" }
},
"007.3": {
name: "Deliver Package to Carol",
status: 0,
location: "LivingRoom",
passage: "DeliverPackage",
period: "afternoon",
day: ["Saturday", "Sunday"],
character: "auntCarol",
stats: { love: 15, money: 20, corruption: 5 },
requirements: { type: "mission", id: "StorePackagePickup", item: "CarolPackage" }
},
"008": {
name: "Clean Bathroom",
status: 0,
location: "Bathroom",
passage: "BathroomCleaning",
period: "afternoon",
day: ["Saturday"],
character: "auntCarol",
stats: { love: 10, lust: 5, money: 10 },
requirements: { type: "mission", id: "DeliverPackage" }
},
"009": {
name: "Take Package to Angela",
status: 0,
location: "LivingRoom",
passage: "AskTakePackageToAngela",
period: "afternoon",
day: ["Saturday"],
character: "auntCarol",
stats: { love: 5 },
requirements: { type: "mission", id: "BathroomCleaning" }
},
"010": {
name: "Deliver Package to Angela",
status: 0,
location: "AngelaHouse",
passage: "DeliverPackageToAngela",
period: "afternoon",
day: ["Saturday"],
character: "neighborAngela",
stats: { angela_love: 10, money: 10 },
requirements: { type: "mission", id: "AskTakePackageToAngela", item: "AngelaPackage" }
},
"011": {
name: "Confirm Delivery with Carol",
status: 0,
location: "LivingRoom",
passage: "ConfirmAngelaDelivery",
period: "afternoon",
day: ["Saturday"],
character: "auntCarol",
stats: { love: 10 },
requirements: { type: "mission", id: "DeliverPackageToAngela" }
},
"012": {
name: "Wash Evening Dishes",
status: 0,
location: "Kitchen",
passage: "EveningDishes",
period: "evening",
day: ["Saturday"],
character: "auntCarol",
stats: { love: 10, lust: 3 },
requirements: { type: "scene", id: "EveningWineProvocation" }
},
"013": {
name: "Find TV Remote",
status: 0,
location: "LivingRoom",
passage: "FindRemote",
period: "morning",
day: ["Sunday"],
character: "auntCarol",
stats: { love: 10, money: 5 },
requirements: { type: "scene", id: "MorningSurpriseTitsjob" }
},
"014": {
name: "Change Bedroom Lightbulb",
status: 0,
location: "BedroomCarol",
passage: "ChangeLightbulb",
period: "noon",
day: ["Sunday"],
character: "auntCarol",
stats: { love: 12, lust: 8, strength_xp: 5 },
requirements: { type: "mission", id: "FindRemote" }
},
"015": {
name: "Pack Your Bags",
status: 0,
location: "Bedroom",
passage: "PackBagsToGo",
period: "evening",
day: ["Sunday"],
character: "player",
stats: { energy: -5 },
requirements: { type: "scene", id: "AfternoonSharedBath" }
},
"016": {
name: "Help Angela Plant Flowers",
status: 0,
location: "AngelaHouseGarden",
passage: "HelpAngelaPlant",
period: "morning",
day: ["Sunday"],
character: "neighborAngela",
stats: { angela_love: 15, strength_xp: 5 },
requirements: { type: "mission", id: "DeliverPackageToAngela" }
},
"017": {
name: "Water Angela's Plants",
status: 0,
location: "AngelaHouseGarden",
passage: "WaterAngelaPlants",
period: "morning",
day: ["Sunday"],
character: "neighborAngela",
stats: { angela_love: 10 },
requirements: { type: "mission", id: "HelpAngelaPlant" }
},
"018": {
name: "Move Heavy Boxes for Skylar",
status: 0,
location: "LocalStore",
passage: "SkylarHeavyBoxes",
period: "afternoon",
day: ["Sunday"],
character: "storeSkylar",
stats: { skylar_love: 5, strength_xp: 10, money: 15 },
requirements: { type: "scene", id: "SkylarChangingSpyScene" }
},
"019": {
name: "Organize Skylar's Stockroom",
status: 0,
location: "LocalStoreStock",
passage: "SkylarOrganizeStock",
period: "afternoon",
day: ["Sunday"],
character: "storeSkylar",
stats: { skylar_love: 7, intelligence_xp: 5, money: 10 },
requirements: { type: "mission", id: "SkylarHeavyBoxes" }
},
"020": {
name: "Fix Skylar's Register",
status: 0,
location: "LocalStore",
passage: "SkylarFixRegister",
period: "afternoon",
day: ["Sunday"],
character: "storeSkylar",
stats: { skylar_love: 8, intelligence_xp: 7, money: 10 },
requirements: { type: "mission", id: "SkylarOrganizeStock" }
},
"021": {
name: "Skylar's 'Last' Delivery",
status: 0,
location: "LocalStore",
passage: "SkylarLastDeliveryRefusal",
period: "afternoon",
day: ["Sunday"],
character: "storeSkylar",
stats: { skylar_corruption: 10 },
requirements: { type: "mission", id: "SkylarFixRegister" }
},
/**************************************************/
/************ AUNT CAROL - MONTH LONG *************/
/**************************************************/
/*
----------------------------------------------------
FASE 1: A NOVA REALIDADE E A BARREIRA DO TABU (Semana 1)
Foco na culpa de Carol e na redefinição de limites.
A intimidade é hesitante e surge de momentos de fraqueza.
----------------------------------------------------
*/
"CM015": {
name: "Unpack for the Month",
status: 0,
location: "Bedroom",
passage: "CarolMonthUnpack",
period: "morning",
day: ["Monday"],
character: "auntCarol",
stats: { love: 5, energy: -10 },
requirements: { type: "scene", id: "EveningFarewellBJ" } // Continua do final do fim de semana
},
"CM016": {
name: "Get the Shopping List",
status: 0,
location: "Kitchen",
passage: "CarolShoppingList",
period: ["morning", "noon"],
day: ["Monday"],
character: "auntCarol",
stats: { love: 5 },
requirements: { type: "mission", id: "CarolMonthUnpack" }
},
"CM017": {
name: "The Weekly Grocery Run",
status: 0,
location: "LocalStore",
passage: "CarolGroceryRun",
period: ["morning", "noon"],
day: ["Monday"],
character: "storeSkylar",
stats: { money: 50, skylar_love: 2 },
requirements: { type: "mission", id: "CarolShoppingList", item: "ShoppingList" }
},
"CM018": {
name: "Fix the Leaky Faucet",
status: 0,
location: "Bathroom",
passage: "CarolFixFaucet",
period: "afternoon",
day: ["Tuesday"],
character: "auntCarol",
stats: { love: 10, intelligence_xp: 5, money: 15 },
requirements: { type: "scene", id: "CarolTenseDinner" }
},
"CM019": {
name: "Movie Night Choice",
status: 0,
location: "LivingRoom",
passage: "CarolMovieNight",
period: "evening",
day: ["Wednesday"],
character: "auntCarol",
stats: { love: 7 },
requirements: { type: "scene", id: "CarolFirstRelapseBJ" }
},
"CM020": {
name: "Help Angela with her Roses",
status: 0,
location: "AngelaHouseGarden",
passage: "CarolHelpAngelaRoses",
period: "afternoon",
day: ["Thursday"],
character: "neighborAngela",
stats: { angela_love: 10 },
requirements: { type: "mission", id: "CarolMovieNight" }
},
/*
----------------------------------------------------
FASE 2: ACEITAÇÃO E EXPLORAÇÃO (Semana 1-2)
A culpa diminui. A relação sexual secreta torna-se uma
parte aceita da rotina. Culmina na primeira vez.
----------------------------------------------------
*/
"CM021": {
name: "Clean the Pool Together",
status: 0,
location: "Pool",
passage: "CarolCleanPoolTogether",
period: "noon",
day: ["Friday"],
character: "auntCarol",
stats: { love: 10, lust: 15 },
requirements: { type: "scene", id: "CarolThankYouBJ" }
},
"CM022": {
name: "Cooking Dinner Together",
status: 0,
location: "Kitchen",
passage: "CarolCookingTogether",
period: "evening",
day: ["Saturday"],
character: "auntCarol",
stats: { love: 15, lust: 10 },
requirements: { type: "scene", id: "CarolPoolsideFunBJ" }
},
"CM023": {
name: "Laundry Day",
status: 0,
location: "LivingRoom", // Assuming laundry area is near
passage: "CarolLaundryDay",
period: "morning",
day: ["Sunday"],
character: "auntCarol",
stats: { lust: 10, corruption: 5 },
requirements: { type: "scene", id: "CarolFirstVaginal" }
},
/*
----------------------------------------------------
FASE 3: A RELAÇÃO SECRETA (Semana 2-3)
O sexo agora é uma parte estabelecida e explorada da
relação. Foco em diferentes dinâmicas e intimidade.
----------------------------------------------------
*/
"CM024": {
name: "Fix Carol's Slow Computer",
status: 0,
location: "LivingRoom",
passage: "CarolFixComputer",
period: "afternoon",
day: ["Monday"],
character: "auntCarol",
stats: { love: 10, intelligence_xp: 7 },
requirements: { type: "scene", id: "CarolAfternoonDelight" }
},
"CM025": {
name: "Learn to Make Her Favorite Cocktail",
status: 0,
location: "Kitchen",
passage: "CarolMakeCocktail",
period: "evening",
day: ["Tuesday"],
character: "auntCarol",
stats: { love: 15, charisma_xp: 5 },
requirements: { type: "scene", id: "CarolRomanticNight" }
},
/*
----------------------------------------------------
FASE 4: O TABU FINAL (Semana 3-4)
A relação atinge o pico de confiança, abrindo
caminho para a exploração do tabu final.
----------------------------------------------------
*/
"CM026": {
name: "A Massage for a Tense Aunt",
status: 0,
location: "BedroomCarol",
passage: "CarolTenseMassage",
period: "evening",
day: ["Wednesday"],
character: "auntCarol",
stats: { love: 20, lust: 25 },
requirements: { type: "scene", id: "CarolRidingCreampie" }
},
/* BRANDI MISSIONS */
"BM001": {
name: "Brandi's Garden Statue",
status: 0,
location: "GardenBrandi",
passage: "BrandiStatueAccident",
period: ["morning", "noon"],
day: ["Saturday"],
character: "brandi",
stats: { brandi_love: -10 },
requirements: { type: "none" }
},
"BM002": {
name: "Work off Debt: Pool Boy",
status: 0,
location: "PoolBrandi",
passage: "BrandiPoolDebt",
period: ["noon", "afternoon"],
day: ["Saturday"],
character: "brandi",
stats: { strength_xp: 5, brandi_corruption: 2 },
requirements: { type: "mission", id: "BrandiStatueAccident" }
},
"BM003": {
name: "Work off Debt: Car Wash",
status: 0,
location: "GardenBrandi",
passage: "BrandiCarWashDebt",
period: ["morning"],
day: ["Sunday"],
character: "brandi",
stats: { strength_xp: 5, brandi_corruption: 3 },
requirements: { type: "mission", id: "BrandiPoolDebt" }
},
"BM004": {
name: "An Inside Job",
status: 0,
location: "LivingRoomBrandi",
passage: "BrandiDustingDuty",
period: ["afternoon"],
day: ["Sunday"],
character: "brandi",
stats: { intelligence_xp: 5 },
requirements: { type: "mission", id: "BrandiCarWashDebt" }
},
"BM005": {
name: "The First Piece of Leverage",
status: 0,
location: "LivingRoomBrandi",
passage: "BrandiLeverageConfrontation",
period: ["afternoon", "evening"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_corruption: 10, brandi_lust: 5 },
requirements: { type: "scene", id: "BrandiOverheardCall" }
},
"BM006": {
name: "A Test of Discretion",
status: 0,
location: "GardenBrandi",
passage: "BrandiDisposeOfLetter",
period: ["evening"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_corruption: 5, player_charisma: 2 },
requirements: { type: "mission", id: "BrandiLeverageConfrontation" }
},
"BM007": {
name: "Find the Lady's Key",
status: 0,
location: "BedroomBrandi",
passage: "BrandiSearchForKey",
period: ["night"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_lust: 15, jenna_loneliness: -10, intelligence_xp: 5 },
requirements: { type: "scene", id: "BrandiLetterDisposed" }
},
/* BRANDI MISSIONS END */
/* VALERIE MISSIONS START */
"VM001": {
name: "Help with Valerie's Garden",
status: 0,
location: "GardenValerie",
passage: "ValerieFixGarden",
period: ["morning", "noon"],
day: ["Saturday", "Sunday"],
character: "valerie",
stats: { valerie_love: 10, strength_xp: 5 },
requirements: { type: "none" }
},
"VM002": {
name: "Move Valerie's Canvas",
status: 0,
location: "LivingRoomValerie",
passage: "ValerieMoveCanvas",
period: ["afternoon"],
day: ["Saturday"],
character: "valerie",
stats: { valerie_love: 12, strength_xp: 5 },
requirements: { type: "scene", id: "ValerieYogaSessionGlimpse" }
},
"VM003": {
name: "Retrieve a Lost Crystal",
status: 0,
location: "PoolValerie",
passage: "ValerieFindCrystal",
period: ["noon", "afternoon"],
day: ["Sunday"],
character: "valerie",
stats: { valerie_love: 15, intelligence_xp: 5 },
requirements: { type: "scene", id: "ValerieChakraCheckupHJ" }
},
"VM004": {
name: "Cleansing the Space",
status: 0,
location: "LivingRoomValerie",
passage: "ValerieHouseCleansing",
period: ["afternoon"],
day: ["Sunday"],
character: "valerie",
stats: { valerie_love: 15, valerie_corruption: 5 },
requirements: { type: "scene", id: "ValerieChakraCheckupHJ" }
},
/* VALERIE MISSIONS END */
/* KENZIE MISSIONS START */
"KM001": {
name: "A Favor for Kenzie",
status: 0,
location: "KitchenValerie",
passage: "KenziePizzaRequest",
period: ["evening"],
day: ["Tuesday", "Sunday"],
character: "kenzie",
stats: { kenzie_love: 10, kenzie_rebellion: 5 },
requirements: { type: "none" }
},
"KM002": {
name: "Keep Kenzie's Secret",
status: 0,
location: "BarRustyMug",
passage: "KenzieBarEncounter",
period: ["evening", "night"],
day: ["Friday"],
character: "kenzie",
stats: { kenzie_love: 15, kenzie_corruption: 10, kenzie_rebellion: 10 },
requirements: { type: "scene", id: "KenzieGratitudeHJ" }
},
/* KENZIE MISSIONS END */
/* JENNA MISSIONS START */
"JM001": {
name: "Fix Jenna's Bike",
status: 0,
location: "GardenJenna",
passage: "JennaFixBike",
period: ["morning"],
day: ["Saturday"],
character: "jenna",
stats: { jenna_love: 10, jenna_loneliness: -5, intelligence_xp: 5 },
requirements: { type: "none" }
},
"JM002": {
name: "Help Tidy Jenna's Garden",
status: 0,
location: "GardenJenna",
passage: "JennaGardenHelp",
period: ["morning", "noon"],
day: ["Sunday"],
character: "jenna",
stats: { jenna_love: 12, jenna_loneliness: -7, strength_xp: 5 },
requirements: { type: "scene", id: "JennaYogaGlimpse" }
},
"JM003": {
name: "Post-Workout Shake",
status: 0,
location: "KitchenJenna",
passage: "JennaMakeProteinShake",
period: ["noon"],
day: ["Saturday", "Sunday"],
character: "jenna",
stats: { jenna_love: 15, jenna_loneliness: -10 },
requirements: { type: "scene", id: "JennaPhotoshootInsecurity" }
},
"JM004": {
name: "Fix a Stuck Window",
status: 0,
location: "BedroomJenna",
passage: "JennaFixBedroomWindow",
period: ["afternoon"],
day: ["Saturday"],
character: "jenna",
stats: { jenna_love: 10, strength_xp: 5 },
requirements: { type: "scene", id: "JennaBathroomSpy" }
},
/* JENNA MISSIONS END */
}>>
<<set $scenes to {
"Greeting": { status: 0, location: "LivingRoom", passage: "Greeting", period: "evening", day: "Friday", character: "auntCarol", stats: { love: 5, lust: 5 }, requirements: { type: "none" } },
"KitchenPreparation": { status: 0, location: "Kitchen", passage: "KitchenPreparation", period: ["evening","night"], day: "Friday", character: "auntCarol", stats: { love: 10 }, requirements: { type: "scene", id: "Greeting" } },
"Bedtime": { status: 0, location: "BedroomCarol", passage: "Bedtime", period: ["evening","night"], day: ["Friday"], character: "auntCarol", stats: { lust: 15, corruption: 5 }, requirements: { type: "scene", id: "KitchenPreparation" } },
"KitchenFlirt": { status: 0, location: "Kitchen", passage: "KitchenFlirt", period: ["morning", "noon"], day: "Saturday", character: "auntCarol", stats: { love: 10, lust: 10 }, requirements: { type: "mission", id: "KitchenChores" } },
"LivingRoomInteraction": { status: 0, location: "LivingRoom", passage: "LivingRoomInteraction", period: ["morning", "noon"], day: "Saturday", character: "auntCarol", stats: { love: 10, lust: 10 }, requirements: { type: "mission", id: "LivingRoomChores" } },
"WardrobeHelp": { status: 0, location: "BedroomCarol", passage: "WardrobeHelpScene", period: ["noon", "afternoon"], day: ["Saturday", "Sunday"], character: "auntCarol", stats: { lust: 20, corruption: 10 }, requirements: { type: "mission", id: "WardrobeHelp" } },
"PoolsideRelaxation": { status: 0, location: "Pool", passage: "PoolsideRelaxation", period: ["noon"], day: "Saturday", character: "auntCarol", stats: { lust: 20, corruption: 10 }, requirements: { type: "mission", id: "PoolChores" } },
"BathroomEspionage": {
status: 0,
location: "Bathroom",
passage: "BathroomSpyScene",
period: "afternoon",
day: ["Saturday"],
character: "auntCarol",
stats: { lust: 25, corruption: 10 },
requirements: { type: "mission", id: "BathroomCleaning" }
},
"EveningWine": {
status: 0,
location: "LivingRoom",
passage: "EveningWineProvocation",
period: "evening",
day: ["Saturday"],
character: "auntCarol",
stats: { lust: 20, corruption: 15, love: 10 },
requirements: { type: "mission", id: "ConfirmAngelaDelivery" }
},
"BedroomHandjob": {
status: 0,
location: "BedroomCarol",
passage: "NighttimeHandjob",
period: "night",
day: ["Saturday"],
character: "auntCarol",
stats: { lust: 30, love: 15, corruption: 10 },
requirements: { type: "mission", id: "EveningDishes" }
},
"MorningTitsjob": {
status: 0,
location: "Bedroom",
passage: "MorningSurpriseTitsjob",
period: "morning",
day: ["Sunday"],
character: "auntCarol",
stats: { lust: 35, love: 20, corruption: 15 },
requirements: { type: "scene", id: "NighttimeHandjob" }
},
"SharedBathProvocation": {
status: 0,
location: "Bathroom",
passage: "AfternoonSharedBath",
period: "afternoon",
day: ["Sunday"],
character: "auntCarol",
stats: { lust: 25, corruption: 10 },
requirements: { type: "mission", id: "ChangeLightbulb" }
},
"FarewellBlowjob": {
status: 0,
location: "Bedroom",
passage: "EveningFarewellBJ",
period: "evening",
day: ["Sunday"],
character: "auntCarol",
stats: { lust: 40, love: 25, corruption: 20 },
requirements: { type: "mission", id: "PackBagsToGo" }
},
"AngelaWalkingSpy": {
status: 0,
location: "AngelaHouse",
passage: "AngelaAfternoonWalkSpy",
period: "afternoon",
day: ["Saturday"],
character: "neighborAngela",
stats: { angela_lust: 10, player_corruption: 5 },
requirements: { type: "mission", id: "DeliverPackageToAngela" }
},
"AngelaThanksHandjob": {
status: 0,
location: "AngelaHouse",
passage: "AngelaGardenThanksHJ",
period: "noon",
day: ["Sunday"],
character: "neighborAngela",
stats: { angela_lust: 25, angela_love: 15, angela_corruption: 10 },
requirements: { type: "mission", id: "WaterAngelaPlants" }
},
"SkylarChangingRoomSpy": {
status: 0,
location: "LocalStore",
passage: "SkylarChangingSpyScene",
period: "afternoon",
day: ["Saturday", "Sunday"],
character: "storeSkylar",
stats: { skylar_lust: 15, player_corruption: 7 },
requirements: { type: "mission", id: "StorePackagePickup" }
},
"SkylarForcedBlowjob": {
status: 0,
location: "LocalStore",
passage: "SkylarStressForcedBJ",
period: "afternoon",
day: ["Sunday"],
character: "storeSkylar",
stats: { skylar_lust: 30, skylar_love: -10, skylar_corruption: 25, player_domination: 10 },
requirements: { type: "mission", id: "SkylarLastDeliveryRefusal" }
},
/* BRANDI SCENES START */
"BS001": {
name: "Brandi's Financial Trouble",
status: 0,
location: "LivingRoomBrandi",
passage: "BrandiOverheardCall",
period: ["afternoon"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_corruption: 5 },
requirements: { type: "mission", id: "BrandiDustingDuty" }
},
"BS002": {
name: "A New Power Dynamic",
status: 0,
location: "LivingRoomBrandi",
passage: "BrandiPowerShift",
period: ["afternoon", "evening"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_corruption: 10, brandi_lust: 5 },
requirements: { type: "mission", id: "BrandiLeverageConfrontation" }
},
"BS003": {
name: "Fear and Gratitude",
status: 0,
location: "GardenBrandi",
passage: "BrandiLetterDisposed",
period: ["evening"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_corruption: 8, brandi_lust: 7, brandi_love: 2 },
requirements: { type: "mission", id: "BrandiDisposeOfLetter" }
},
"BS004": {
name: "A Glimpse of Vulnerability",
status: 0,
location: "BarGildedLily",
passage: "BrandiVulnerableAtBar",
period: ["evening", "night"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_lust: 10, brandi_corruption: 5 },
requirements: { type: "scene", id: "BrandiLetterDisposed" }
},
"BS005": {
name: "Paying Her First Real Debt",
status: 0,
location: "BedroomBrandi",
passage: "BrandiBlackmailHandjob",
period: ["night"],
day: ["Sunday"],
character: "brandi",
stats: { brandi_lust: 35, brandi_corruption: 20, brandi_love: -5 },
requirements: { type: "mission", id: "BrandiSearchForKey" }
},
/* BRANDI SCENES END */
/* VALERIE SCENES START */
"VS001": {
name: "A Post-Shower Encounter",
status: 0,
location: "LivingRoomValerie",
passage: "ValerieTowelEncounter",
period: ["morning", "noon"],
day: ["Saturday", "Sunday"],
character: "valerie",
stats: { valerie_lust: 10, player_corruption: 2 },
requirements: { type: "mission", id: "ValerieFixGarden" }
},
"VS002": {
name: "Yoga Session Glimpse",
status: 0,
location: "LivingRoomValerie",
passage: "ValerieYogaSessionGlimpse",
period: ["morning"],
day: ["Saturday"],
character: "valerie",
stats: { valerie_lust: 12, player_corruption: 3 },
requirements: { type: "scene", id: "ValerieTowelEncounter" }
},
"VS003": {
name: "Poolside Gratitude",
status: 0,
location: "PoolValerie",
passage: "ValeriePoolsideThanks",
period: ["afternoon"],
day: ["Saturday"],
character: "valerie",
stats: { valerie_lust: 15, valerie_love: 5 },
requirements: { type: "mission", id: "ValerieMoveCanvas" }
},
"VS004": {
name: "Energy Release Session",
status: 0,
location: "LivingRoomValerie",
passage: "ValerieEnergyReleaseHJ",
period: ["evening"],
day: ["Saturday"],
character: "valerie",
stats: { valerie_lust: 25, valerie_love: 5, valerie_corruption: 10 },
requirements: { type: "scene", id: "ValeriePoolsideThanks" }
},
"VS005": {
name: "Chakra Check-up",
status: 0,
location: "LivingRoomValerie",
passage: "ValerieChakraCheckupHJ",
period: ["morning", "noon"],
day: ["Sunday"],
character: "valerie",
stats: { valerie_lust: 30, valerie_love: 7, valerie_corruption: 15 },
requirements: { type: "scene", id: "ValerieEnergyReleaseHJ" }
},
"VS006": {
name: "A Deeper Alignment",
status: 0,
location: "BedroomValerie",
passage: "ValerieDeeperAlignmentTJ_HJ",
period: ["evening"],
day: ["Sunday"],
character: "valerie",
stats: { valerie_lust: 40, valerie_love: 10, valerie_corruption: 20 },
requirements: { type: "mission", id: "ValerieHouseCleansing" }
},
"VS007": {
name: "Primal Energy Transfer",
status: 0,
location: "BedroomValerie",
passage: "ValeriePrimalEnergyBJ",
period: ["night"],
day: ["Sunday"],
character: "valerie",
stats: { valerie_lust: 50, valerie_love: 15, valerie_corruption: 25 },
requirements: { type: "scene", id: "ValerieDeeperAlignmentTJ_HJ" }
},
/* VALERIE SCENES END */
/* KENZIE SCENES START */
"KS001": {
name: "An Open Door",
status: 0,
location: "BedroomKenzie",
passage: "KenzieCaughtMasturbating",
period: ["evening", "night"],
day: ["Wednesday", "Saturday"],
character: "kenzie",
stats: { kenzie_lust: 20, kenzie_corruption: 15, player_corruption: 5 },
requirements: { type: "mission", id: "KenziePizzaRequest" }
},
"KS002": {
name: "A Little Gratitude",
status: 0,
location: "BedroomKenzie",
passage: "KenzieGratitudeHJ",
period: ["night"],
day: ["Wednesday", "Saturday"],
character: "kenzie",
stats: { kenzie_lust: 30, kenzie_love: 5, kenzie_corruption: 20, kenzie_rebellion: 5 },
requirements: { type: "scene", id: "KenzieCaughtMasturbating" }
},
"KS003": {
name: "A Dare in the Dark",
status: 0,
location: "BedroomKenzie",
passage: "KenzieDaringBlowjob",
period: ["night"],
day: ["Friday", "Saturday"],
character: "kenzie",
stats: { kenzie_lust: 45, kenzie_love: 5, kenzie_corruption: 25 },
requirements: { type: "mission", id: "KenzieBarEncounter" }
},
"KS004": {
name: "Showing Off Her Skills",
status: 0,
location: "BedroomKenzie",
passage: "KenzieDeepthroatFacefuck",
period: ["night"],
day: ["Saturday", "Sunday"],
character: "kenzie",
stats: { kenzie_lust: 60, kenzie_love: -5, kenzie_corruption: 35, kenzie_rebellion: 15 },
requirements: { type: "scene", id: "KenzieDaringBlowjob" }
},
/* KENZIE SCENES END */
/* JENNA SCENES START */
"JS001": {
name: "A Glimpse of Her Routine",
status: 0,
location: "GardenJenna",
passage: "JennaYogaGlimpse",
period: ["morning"],
day: ["Saturday", "Sunday"],
character: "jenna",
stats: { jenna_lust: 10 },
requirements: { type: "mission", id: "JennaFixBike" }
},
"JS002": {
name: "A Moment of Insecurity",
status: 0,
location: "LivingRoomJenna",
passage: "JennaPhotoshootInsecurity",
period: ["afternoon"],
day: ["Saturday"],
character: "jenna",
stats: { jenna_love: 10, jenna_lust: 5, jenna_loneliness: -10 },
requirements: { type: "mission", id: "JennaGardenHelp" }
},
"JS003": {
name: "Seeking Validation",
status: 0,
location: "LivingRoomJenna",
passage: "JennaTryingOnClothes",
period: ["evening"],
day: ["Saturday"],
character: "jenna",
stats: { jenna_love: 10, jenna_lust: 20 },
requirements: { type: "mission", id: "JennaMakeProteinShake" }
},
"JS004": {
name: "Spying on a Private Moment",
status: 0,
location: "BathroomJenna",
passage: "JennaBathroomSpy",
period: ["evening"],
day: ["Saturday"],
character: "jenna",
stats: { jenna_lust: 25, player_corruption: 10 },
requirements: { type: "scene", id: "JennaTryingOnClothes" }
},
"JS005": {
name: "An 'Accidental' Reveal",
status: 0,
location: "BedroomJenna",
passage: "JennaRobeDrop",
period: ["afternoon"],
day: ["Saturday"],
character: "jenna",
stats: { jenna_lust: 30, jenna_corruption: 15, jenna_loneliness: -5 },
requirements: { type: "mission", id: "JennaFixBedroomWindow" }
},
"JS006": {
name: "A Private Pool Show",
status: 0,
location: "PoolJenna",
passage: "JennaNudePoolMasturbation",
period: ["afternoon"],
day: ["Sunday"],
character: "jenna",
stats: { jenna_lust: 40, jenna_corruption: 20, jenna_love: 5 },
requirements: { type: "scene", id: "JennaRobeDrop" }
},
"JS007": {
name: "A Thank You for the Company",
status: 0,
location: "LivingRoomJenna",
passage: "JennaGratefulHandjob",
period: ["evening"],
day: ["Sunday"],
character: "jenna",
stats: { jenna_lust: 50, jenna_corruption: 25, jenna_love: 15 },
requirements: { type: "scene", id: "JennaNudePoolMasturbation" }
},
/**************************************************/
/************ AUNT CAROL - MONTH LONG *************/
/**************************************************/
/*
----------------------------------------------------
FASE 1: A NOVA REALIDADE E A BARREIRA DO TABU (Semana 1)
----------------------------------------------------
*/
"CS014": {
name: "A Tense Dinner",
status: 0,
location: "Kitchen",
passage: "CarolTenseDinner",
period: "evening",
day: ["Monday"],
character: "auntCarol",
stats: { love: 5, lust: -5 }, // Lust diminui devido à tensão/culpa dela
requirements: { type: "mission", id: "CarolGroceryRun" }
},
"CS015": {
name: "The First Relapse", // Blowjob #1 (Pós-Fim de Semana)
status: 0,
location: "LivingRoom",
passage: "CarolFirstRelapseBJ",
period: "night",
day: ["Tuesday"],
character: "auntCarol",
stats: { lust: 30, corruption: 10, love: 5 },
requirements: { type: "mission", id: "CarolFixFaucet" }
},
/*
----------------------------------------------------
FASE 2: ACEITAÇÃO E EXPLORAÇÃO (Semana 1-2)
----------------------------------------------------
*/
"CS016": {
name: "A Proper 'Thank You'", // Blowjob #2
status: 0,
location: "BedroomCarol",
passage: "CarolThankYouBJ",
period: "night",
day: ["Thursday"],
character: "auntCarol",
stats: { lust: 35, love: 10 },
requirements: { type: "mission", id: "CarolHelpAngelaRoses" }
},
"CS017": {
name: "Poolside Fun", // Blowjob #3
status: 0,
location: "Pool",
passage: "CarolPoolsideFunBJ",
period: "afternoon",
day: ["Friday"],
character: "auntCarol",
stats: { lust: 40, corruption: 10 },
requirements: { type: "mission", id: "CarolCleanPoolTogether" }
},
"CS018": {
name: "Crossing the Rubicon", // Blowjob que vira o Primeiro Sexo Vaginal
status: 0,
location: "BedroomCarol",
passage: "CarolFirstVaginal",
period: "night",
day: ["Saturday"],
character: "auntCarol",
stats: { lust: 60, love: 25, corruption: 20 },
requirements: { type: "mission", id: "CarolCookingTogether" }
},
/*
----------------------------------------------------
FASE 3: A RELAÇÃO SECRETA (Semana 2-3)
----------------------------------------------------
*/
"CS019": {
name: "An Afternoon Delight", // Sexo Vaginal #2
status: 0,
location: "BedroomCarol",
passage: "CarolAfternoonDelight",
period: "afternoon",
day: ["Sunday"],
character: "auntCarol",
stats: { lust: 50, love: 10 },
requirements: { type: "mission", id: "CarolLaundryDay" }
},
"CS020": {
name: "A Slow, Romantic Night", // Sexo Vaginal #3
status: 0,
location: "BedroomCarol",
passage: "CarolRomanticNight",
period: "night",
day: ["Monday"],
character: "auntCarol",
stats: { lust: 55, love: 20 },
requirements: { type: "mission", id: "CarolFixComputer" }
},
"CS021": {
name: "Riding to Ecstasy", // Sexo Vaginal #4 (Riding + Creampie)
status: 0,
location: "BedroomCarol",
passage: "CarolRidingCreampie",
period: "night",
day: ["Tuesday"],
character: "auntCarol",
stats: { lust: 65, love: 15, corruption: 25 },
requirements: { type: "mission", id: "CarolMakeCocktail" }
},
/*
----------------------------------------------------
FASE 4: O TABU FINAL (Semana 3-4)
----------------------------------------------------
*/
"CS022": {
name: "The Final Taboo", // Sexo Anal
status: 0,
location: "BedroomCarol",
passage: "CarolFinalTabooAnal",
period: "night",
day: ["Wednesday"],
character: "auntCarol",
stats: { lust: 80, love: 20, corruption: 40 },
requirements: { type: "mission", id: "CarolTenseMassage" }
}
}>>
<<set $location to "Aunt's House">><div class="game-container">
<!-- Texto Narrativo -->
<div class="narrative-text">
The bus pulls up to the curb, and you step off, stretching your legs. Finally, out of the city for the weekend. She invited me after hearing I needed a break from school. I've always been close with her, and I'm looking forward to some time away from the city.
</div>
<!-- Diálogo do Jogador -->
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Yeah I was needing it... It was a long time that we didn't saw each other.
</div>
</div>
<!-- Ambiente -->
<br>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/house/house.jpg" alt="House">
</div>
<br>
<p class="environment-text">
Aunt Carol's house is a charming two-story home with a well-manicured lawn and flower beds bursting with color. I walk up the driveway and ring the doorbell.
</p>
</div>
<br>
<!-- Diálogo da Carol -->
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<br>
<div class="dialog-text carol">
You're here! I'm so glad you could make it. Come on in, honey, I've got everything ready for you.
</div>
</div>
<!-- Botão de Ação -->
<div class="menu-buttons">
[[Enter Aunt Carol's House->Greeting]]
</div>
</div><div class="game-container">
<div class="credits-screen">
<h1>Credits</h1>
<div class="logo">
<img src="img/utils/logo/CK.png" alt="Ck" style="max-width: 200px; height: auto; margin-bottom: 20px;">
</div>
<p>A game by CK (ChromaK)</p>
<p>Support the creator on Patreon:</p>
<a href="https://www.patreon.com/ChromaK">patreon.com/ChromaK</a>
<p class="spaced">Made with Twine and SugarCube</p>
<div class="menu-buttons">
[[Return to the Main Menu->Start]]
</div>
</div>
</div><div class="stats">
<div class="game-stats">
<!-- Tempo em formato 24h -->
<div class="time-display">$time:00</div>
<div class="day-display">$actualDay</div>
<!-- Determinação do período atual -->
<<if $time >= 6 && $time <= 10>>
<div class="period-indicator period-morning"><<print $period.morning.label>></div>
<<elseif $time >= 11 && $time <= 13>>
<div class="period-indicator period-noon"><<print $period.noon.label>></div>
<<elseif $time >= 14 && $time <= 17>>
<div class="period-indicator period-afternoon"><<print $period.afternoon.label>></div>
<<elseif $time >= 18 && $time <= 21>>
<div class="period-indicator period-evening"><<print $period.evening.label>></div>
<<else>>
<div class="period-indicator period-night"><<print $period.night.label>></div>
<</if>>
</div>
<!-- BOTÃO DE AVANÇAR O TEMPO MOVIDO PARA CÁ -->
<div class="advance-time-button-container">
<<link "<span class='emoji'>⏰</span> Advance 1 Hour" `passage()`>>
<<set $time += 1>>
<<set $player.energy -= 2>>
<<if $player.energy < 0>> <<set $player.energy to 0>> <</if>>
<<if $time >= 24>>
<<set $time -= 24>>
/* A lógica completa de virada de dia deve residir principalmente na SleepSequence */
/* Aqui, apenas resetamos a hora. A SleepSequence cuidará de $actualDay e resets diários. */
<</if>>
<</link>>
</div>
<div class="player-stats">
<h3>Player Stats</h3>
<div class="stat-row">
<span class="stat-label">⚡ Energy: <<= $player.energy>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">💰 Money: $<<= $player.money>></span>
</div>
<div class="stat-row">
<span class="stat-label">❤️ Lust: <<= $player.lust>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">🎭 Charisma: <<= $player.charisma>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">🧠 Intelligence: <<= $player.intelligence>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">💪 Strength: <<= $player.strength>>%</span>
</div>
</div>
<div class="active-missions">
<h3>Active Missions</h3>
<<set _activeMissionCount to 0>>
<<for _id, _mission range $missions>>
<<if _mission.status === 0 and _activeMissionCount < 3>>
<div class="mission">
<span class="mission-name"><<print _mission.name>></span>
<div class="badges">
<span class="badge badge-location"><<print _mission.location>></span>
<span class="badge badge-day"><<print _mission.day>></span>
<span class="badge badge-period"><<print _mission.period>></span>
</div>
</div>
<<set _activeMissionCount += 1>>
<</if>>
<</for>>
<<if _activeMissionCount === 0>>
<p class="no-content-sidebar">No active missions.</p>
<</if>>
</div>
<!-- NOVA LÓGICA: Available Scenes -->
<div class="available-scenes">
<h3>Upcoming Scenes</h3> <!-- Renomeado para mais clareza -->
<<set _availableSceneCount to 0>>
<<set _maxScenesToShowInSidebar to 3>> <!-- Limite para não poluir -->
<<for _sceneKey, _sceneData range $scenes>>
<<if _sceneData.status === 0>> <!-- Apenas cenas não jogadas -->
<<set _requirementsMet to false>>
<<set _reqDetails to _sceneData.requirements>>
<<if _reqDetails.type is "none">>
<<set _requirementsMet to true>>
<<elseif _reqDetails.type is "mission">>
<<set _requiredMissionKey to "">>
<<for _mKey, _mDetails range $missions>>
<<if _mDetails.passage is _reqDetails.id>>
<<set _requiredMissionKey to _mKey>>
<<break>>
<</if>>
<</for>>
<<if _requiredMissionKey isnot "" and $missions[_requiredMissionKey] and $missions[_requiredMissionKey].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "scene">>
<<set _requiredSceneKey to "">>
<<for _sKey, _sDetails range $scenes>>
<<if _sDetails.passage is _reqDetails.id>>
<<set _requiredSceneKey to _sKey>>
<<break>>
<</if>>
<</for>>
<<if _requiredSceneKey isnot "" and $scenes[_requiredSceneKey] and $scenes[_requiredSceneKey].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "event">>
<<if $events[_reqDetails.id] and $events[_reqDetails.id].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "item">>
<<if $player.inventory.includes(_reqDetails.item)>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "stats">>
<<set _requirementsMet to true>> /* Assume true, anula se alguma falhar */
<<for _statName, _statValue range _reqDetails>>
<<if _statName isnot "type">>
<<if not $player[_statName] or $player[_statName] < _statValue>>
<<set _requirementsMet to false>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if _requirementsMet and _availableSceneCount < _maxScenesToShowInSidebar>>
<div class="scene-entry">
<span class="scene-entry-name"><<print _sceneKey.replace(/([A-Z](?=[a-z]))/g, ' $1').trim()>></span> <!-- Usa a CHAVE da cena para nomear -->
<div class="badges">
<span class="badge badge-location" title="Location"><<print _sceneData.location>></span>
<span class="badge badge-day" title="Day(s)"><<print _sceneData.day>></span>
<span class="badge badge-period" title="Period(s)"><<print _sceneData.period>></span>
</div>
</div>
<<set _availableSceneCount += 1>>
<</if>>
<</if>>
<</for>>
<<if _availableSceneCount === 0>>
<p class="no-content-sidebar">No new opportunities with met requirements right now.</p>
<</if>>
</div>
<div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Okay, I'm inside. Now, where to first?
</div>
</div>
<div class="environment-container">
<p class="environment-text">Explore the House of Aunt Carol.</p>
</div>
<!-- Grid de Locações -->
<!-- Grid de Locações -->
<div class="location-grid">
<!-- Cozinha -->
<div class="location-item">
<div class="location-overlay">
[[Kitchen|Kitchen]]
</div>
<img src="img/layout/kitchen/kitchen_small.jpg" alt="Kitchen">
</div>
<!-- Living Room -->
<div class="location-item">
<div class="location-overlay">
[[Living Room|LivingRoom]]
</div>
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Living Room">
</div>
<!-- Bedroom Carol -->
<div class="location-item">
<div class="location-overlay">
[[Carol's Bedroom|BedroomCarol]]
</div>
<img src="img/layout/bedroom_carol/bedroom_small.jpg" alt="Carol's Bedroom">
</div>
<!-- Seu Quarto -->
<div class="location-item">
<div class="location-overlay">
[[Your Bedroom|Bedroom]]
</div>
<img src="img/layout/bedroom/bedroom_messy_small.png" alt="Your Bedroom">
</div>
<!-- Bathroom -->
<div class="location-item">
<div class="location-overlay">
[[Bathroom|Bathroom]]
</div>
<img src="img/layout/bathroom/bathroom.jpg" alt="Bathroom">
</div>
<!-- Pool -->
<div class="location-item">
<div class="location-overlay">
[[To the Pool|Pool]]
</div>
<img src="img/layout/pool/pool_sunny_small.jpg" alt="Pool">
</div>
<!-- LÓGICA CONDICIONAL PARA SAÍDA -->
<<if $keyEvents.openWorldCarolCity>>
<!-- MUNDO ABERTO: Link para o Hub 'Outside' -->
<div class="location-item">
<div class="location-overlay">
[[Go Outside|Outside]]
</div>
<img src="img/layout/house/house.jpg" alt="Go Outside"> <!-- Usando a imagem da casa para sair -->
</div>
<<else>>
<!-- MODO "FIM DE SEMANA": Links diretos para Angela e Loja -->
<!-- Neighbor -->
<div class="location-item">
<div class="location-overlay">
[[Visit Neighbor|AngelaHouse]]
</div>
<img src="img/layout/angela_house/house_flower.webp" alt="Neighbor's House">
</div>
<!-- Store -->
<div class="location-item">
<div class="location-overlay">
[[Visit Store|LocalStore]]
</div>
<img src="img/layout/store/store_outside.jpg" alt="Local Store">
</div>
<</if>>
</div>
<!-- SEÇÃO DE EVENTOS -->
<<silently>>
<<set _availableEventsArray to []>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _eventId, _event range $events>>
<<if _event.location is "CarolHouse" and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">> <<set _eventReqMet to State.hasPlayed(_event.requirements.id)>>
<<elseif _event.requirements.type is "scene">> <<set _eventReqMet to State.hasPlayed(_event.requirements.id)>>
<<elseif _event.requirements.type is "item">> <<set _eventReqMet to $player.inventory.includes(_event.requirements.item)>>
<<elseif _event.requirements.type is "keyEvent">> <<set _eventReqMet to $keyEvents[_event.requirements.id] is true>>
<<elseif _event.requirements.type is "stats">>
<<set _eventReqMet to true>>
<<for _stat, _value range _event.requirements>>
<<if _stat isnot "type" and $player[_stat] < _value>> <<set _eventReqMet to false>> <</if>>
<</for>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</silently>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
/* Adicionando a classe "event-link" diretamente ao macro <<link>> */
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<!-- FIM DA SEÇÃO DE EVENTOS -->
</div> <div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The sweet smell of something cooking is calling to me... Now that I'm awake, I must discover what Carol's preparing for you.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/kitchen/kitchen_small.jpg" alt="Kitchen">
</div>
<p class="environment-text">The kitchen is warm and inviting, sun streaming through the windows. You can make out the day with birds singing!</p>
</div>
<<if ($auntCarol.locationSchedule.Kitchen.start <= $auntCarol.locationSchedule.Kitchen.end and $time >= $auntCarol.locationSchedule.Kitchen.start and $time <= $auntCarol.locationSchedule.Kitchen.end)
or ($auntCarol.locationSchedule.Kitchen.start > $auntCarol.locationSchedule.Kitchen.end and ($time >= $auntCarol.locationSchedule.Kitchen.start or $time <= $auntCarol.locationSchedule.Kitchen.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Aunt Carol Face">
</div>
<div class="dialog-text carol">
Good morning! Did you sleep well? Is there anything I can help you with?
</div>
</div>
<<endif>>
<<if State.hasPlayed("Kitchen")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "Kitchen" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "Kitchen" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available for now.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $auntCarol.interactions>>
<<if ($auntCarol.locationSchedule.Kitchen.start <= $auntCarol.locationSchedule.Kitchen.end and $time >= $auntCarol.locationSchedule.Kitchen.start and $time <= $auntCarol.locationSchedule.Kitchen.end)
or ($auntCarol.locationSchedule.Kitchen.start > $auntCarol.locationSchedule.Kitchen.end and ($time >= $auntCarol.locationSchedule.Kitchen.start or $time <= $auntCarol.locationSchedule.Kitchen.end))>>
<<if _interaction.limit > $auntCarol.dailyInteractions[_type]>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Welcome to the kitchen, let's find what to do there.</p>
<<set State.track("Kitchen")>>
<<endif>>
<div class="menu-buttons">
[[Leave The Kitchen->CarolHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The comforting warmth of the living room beckons me... Time to relax and see what awaits.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Living Room">
</div>
<p class="environment-text">The living room is cozy and inviting, with soft lighting and comfortable seating. A peaceful ambiance fills the space.</p>
</div>
<<if ($auntCarol.locationSchedule.LivingRoom.start <= $auntCarol.locationSchedule.LivingRoom.end and $time >= $auntCarol.locationSchedule.LivingRoom.start and $time <= $auntCarol.locationSchedule.LivingRoom.end)
or ($auntCarol.locationSchedule.LivingRoom.start > $auntCarol.locationSchedule.LivingRoom.end and ($time >= $auntCarol.locationSchedule.LivingRoom.start or $time <= $auntCarol.locationSchedule.LivingRoom.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Aunt Carol Face">
</div>
<div class="dialog-text carol">
Good day! It's great to see you. Is there anything special you'd like to do today?
</div>
</div>
<<endif>>
<<if State.hasPlayed("LivingRoom")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "LivingRoom" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "LivingRoom" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available for now.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $auntCarol.interactions>>
<<if ($auntCarol.locationSchedule.LivingRoom.start <= $auntCarol.locationSchedule.LivingRoom.end and $time >= $auntCarol.locationSchedule.LivingRoom.start and $time <= $auntCarol.locationSchedule.LivingRoom.end)
or ($auntCarol.locationSchedule.LivingRoom.start > $auntCarol.locationSchedule.LivingRoom.end and ($time >= $auntCarol.locationSchedule.LivingRoom.start or $time <= $auntCarol.locationSchedule.LivingRoom.end))>>
<<if _interaction.limit > $auntCarol.dailyInteractions[_type]>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Welcome to the living room, let's find what to do here.</p>
<<set State.track("LivingRoom")>>
<</if>>
<div class="menu-buttons">
[[Leave The Living Room->CarolHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Stepping into Aunt Carol's bedroom feels oddly personal... I should be careful about what I do here.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bedroom_carol/bedroom_small.jpg" alt="Bedroom Carol">
</div>
<p class="environment-text">The room is neatly arranged, with a soft scent of lavender lingering in the air. The bed looks inviting, and there's a small vanity by the window.</p>
</div>
<<if ($auntCarol.locationSchedule.BedroomCarol.start <= $auntCarol.locationSchedule.BedroomCarol.end and $time >= $auntCarol.locationSchedule.BedroomCarol.start and $time <= $auntCarol.locationSchedule.BedroomCarol.end)
or ($auntCarol.locationSchedule.BedroomCarol.start > $auntCarol.locationSchedule.BedroomCarol.end and ($time >= $auntCarol.locationSchedule.BedroomCarol.start or $time <= $auntCarol.locationSchedule.BedroomCarol.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Aunt Carol Face">
</div>
<div class="dialog-text carol">
Oh? You’re in my room... Did you need something?
</div>
</div>
<<endif>>
<<if State.hasPlayed("BedroomCarol")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "BedroomCarol" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>>
<<set _periodMatch to true>>
<</if>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">>
<<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">>
<<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">>
<<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">>
<<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type">>
<<if $player[_stat] < _value>>
<<set _reqMet to false>>
<</if>>
<</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>>
<<set _display to true>>
<<else>>
<<set _display to false>>
<</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount to _missionCount + 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "BedroomCarol" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>>
<<set _periodMatch to true>>
<</if>>
<</if>>
<<if _periodMatch>> /* Adicionado: Verifica se o período bate */
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">>
<<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">>
<<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">>
<<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">>
<<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type">>
<<if $player[_stat] < _value>>
<<set _reqMet to false>>
<</if>>
<</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>>
<<set _display to true>>
<<else>>
<<set _display to false>>
<</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount to _sceneCount + 1>>
<</if>>
<</if>>
<</if>> /* Fim do if _periodMatch */
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available for now.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $auntCarol.interactions>>
<<if ($auntCarol.locationSchedule.BedroomCarol.start <= $auntCarol.locationSchedule.BedroomCarol.end and $time >= $auntCarol.locationSchedule.BedroomCarol.start and $time <= $auntCarol.locationSchedule.BedroomCarol.end)
or ($auntCarol.locationSchedule.BedroomCarol.start > $auntCarol.locationSchedule.BedroomCarol.end and ($time >= $auntCarol.locationSchedule.BedroomCarol.start or $time <= $auntCarol.locationSchedule.BedroomCarol.end))>>
<<if _interaction.limit > $auntCarol.dailyInteractions[_type]>>
<<if _interactionCount < 3>>
<<set _display to true>>
<<else>>
<<set _display to false>>
<</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount to _interactionCount + 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Standing in Aunt Carol's bedroom, I wonder if there's anything worth doing here...</p>
<<set State.track("BedroomCarol")>>
<</if>>
<div class="menu-buttons">
[[Leave the Carol's room->CarolHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Alright, I made it to Angela's house. Let's see if she's around.
</div>
</div>
<div class="environment-container">
<p class="environment-text">You've arrived at Angela's house. The garden is well-kept, and the entrance looks inviting.</p>
</div>
<<if ($neighborAngela.locationSchedule.AngelaHouse.start <= $neighborAngela.locationSchedule.AngelaHouse.end and $time >= $neighborAngela.locationSchedule.AngelaHouse.start and $time <= $neighborAngela.locationSchedule.AngelaHouse.end)
or ($neighborAngela.locationSchedule.AngelaHouse.start > $neighborAngela.locationSchedule.AngelaHouse.end and ($time >= $neighborAngela.locationSchedule.AngelaHouse.start or $time <= $neighborAngela.locationSchedule.AngelaHouse.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Oh, hey! I wasn’t expecting company. What brings you here?
</div>
</div>
<<endif>>
<div class="location-grid">
<div class="location-item">
<div class="location-overlay">
[[Go to the Garden|AngelaHouseGarden]]
</div>
<img src="img/layout/angela_garden/garden.jpeg" alt="Angela's Garden">
</div>
<div class="location-item">
<div class="location-overlay">
[[Return to Carol's House|CarolHouse]]
</div>
<img src="img/layout/house/house.jpg" alt="Exit to Carol's House">
</div>
</div>
<<if State.hasPlayed("AngelaHouse")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "AngelaHouse" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "AngelaHouse" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $neighborAngela.interactions>>
<<if ($neighborAngela.locationSchedule.AngelaHouse.start <= $neighborAngela.locationSchedule.AngelaHouse.end and $time >= $neighborAngela.locationSchedule.AngelaHouse.start and $time <= $neighborAngela.locationSchedule.AngelaHouse.end)
or ($neighborAngela.locationSchedule.AngelaHouse.start > $neighborAngela.locationSchedule.AngelaHouse.end and ($time >= $neighborAngela.locationSchedule.AngelaHouse.start or $time <= $neighborAngela.locationSchedule.AngelaHouse.end))>>
<<if _interaction.limit > ($neighborAngela.dailyInteractions[_type] or 0)>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Welcome to Angela's house. Let's see what you can do here.</p>
<<set State.track("AngelaHouse")>>
<</if>>
<div class="menu-buttons">
[[Leave Angela's House->CarolHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The sun glistens on the water's surface... A perfect place to relax or maybe even have some fun.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/pool/pool_sunny_small.jpg" alt="Pool">
</div>
<p class="environment-text">The pool area is refreshing and peaceful. The water looks cool and inviting, with a few lounge chairs positioned under the shade.</p>
</div>
<<if ($auntCarol.locationSchedule.Pool.start <= $auntCarol.locationSchedule.Pool.end and $time >= $auntCarol.locationSchedule.Pool.start and $time <= $auntCarol.locationSchedule.Pool.end)
or ($auntCarol.locationSchedule.Pool.start > $auntCarol.locationSchedule.Pool.end and ($time >= $auntCarol.locationSchedule.Pool.start or $time <= $auntCarol.locationSchedule.Pool.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Aunt Carol Face">
</div>
<div class="dialog-text carol">
The water is just perfect today. Are you going for a swim?
</div>
</div>
<<endif>>
<<if State.hasPlayed("Pool")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "Pool" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "Pool" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available for now.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $auntCarol.interactions>> /* CORRIGIDO: Usa auntCarol */
<<if ($auntCarol.locationSchedule.Pool.start <= $auntCarol.locationSchedule.Pool.end and $time >= $auntCarol.locationSchedule.Pool.start and $time <= $auntCarol.locationSchedule.Pool.end) /* CORRIGIDO: Usa locationSchedule de Carol na Pool */
or ($auntCarol.locationSchedule.Pool.start > $auntCarol.locationSchedule.Pool.end and ($time >= $auntCarol.locationSchedule.Pool.start or $time <= $auntCarol.locationSchedule.Pool.end))>>
<<if _interaction.limit > $auntCarol.dailyInteractions[_type]>> /* CORRIGIDO: Usa dailyInteractions de Carol */
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Standing by the pool, I wonder what to do next.</p>
<<set State.track("Pool")>>
<<endif>>
<div class="menu-buttons">
[[Leave the pool area->CarolHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The garden is filled with the scent of flowers and the chirping of birds. A peaceful place to relax.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/angela_garden/garden.jpeg" alt="Garden">
</div>
<p class="environment-text">The garden outside Angela's house is well-kept, with vibrant flowers and a small pathway leading further in.</p>
</div>
<<if ($neighborAngela.locationSchedule.AngelaHouseGarden.start <= $neighborAngela.locationSchedule.AngelaHouseGarden.end and $time >= $neighborAngela.locationSchedule.AngelaHouseGarden.start and $time <= $neighborAngela.locationSchedule.AngelaHouseGarden.end)
or ($neighborAngela.locationSchedule.AngelaHouseGarden.start > $neighborAngela.locationSchedule.AngelaHouseGarden.end and ($time >= $neighborAngela.locationSchedule.AngelaHouseGarden.start or $time <= $neighborAngela.locationSchedule.AngelaHouseGarden.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
It's a beautiful day to be in the garden, don't you think?
</div>
</div>
<<endif>>
<<if State.hasPlayed("AngelaHouseGarden")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "AngelaHouseGarden" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "AngelaHouseGarden" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available for now.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $neighborAngela.interactions>>
<<if ($neighborAngela.locationSchedule.AngelaHouseGarden.start <= $neighborAngela.locationSchedule.AngelaHouseGarden.end and $time >= $neighborAngela.locationSchedule.AngelaHouseGarden.start and $time <= $neighborAngela.locationSchedule.AngelaHouseGarden.end)
or ($neighborAngela.locationSchedule.AngelaHouseGarden.start > $neighborAngela.locationSchedule.AngelaHouseGarden.end and ($time >= $neighborAngela.locationSchedule.AngelaHouseGarden.start or $time <= $neighborAngela.locationSchedule.AngelaHouseGarden.end))>>
<<if _interaction.limit > ($neighborAngela.dailyInteractions[_type] or 0)>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Welcome to Angela's beautiful garden. Let's see what you can do here.</p>
<<set State.track("AngelaHouseGarden")>>
<</if>>
<div class="menu-buttons">
[[Return to Angela's House Entrance->AngelaHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I’ve arrived at the Local Store. Let’s see what’s going on here.
</div>
</div>
<div class="environment-container">
<p class="environment-text">The Local Store is bustling with activity. Shelves are stocked, and the scent of fresh produce fills the air.</p>
</div>
<<if ($storeSkylar.locationSchedule.LocalStore.start <= $storeSkylar.locationSchedule.LocalStore.end and $time >= $storeSkylar.locationSchedule.LocalStore.start and $time <= $storeSkylar.locationSchedule.LocalStore.end)
or ($storeSkylar.locationSchedule.LocalStore.start > $storeSkylar.locationSchedule.LocalStore.end and ($time >= $storeSkylar.locationSchedule.LocalStore.start or $time <= $storeSkylar.locationSchedule.LocalStore.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Welcome! Let me know if you need any help.
</div>
</div>
<<endif>>
<div class="location-grid">
<div class="location-item">
<div class="location-overlay">
[[Enter Stockroom|LocalStoreStock]]
</div>
<img src="img/layout/store_stock/stock.png" alt="Stockroom Door">
</div>
<div class="location-item">
<div class="location-overlay">
[[Return to Carol's House|CarolHouse]]
</div>
<img src="img/layout/house/house.jpg" alt="Exit to Carol's House">
</div>
</div>
<<if State.hasPlayed("LocalStore")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "LocalStore" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "LocalStore" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $storeSkylar.interactions>>
<<if ($storeSkylar.locationSchedule.LocalStore.start <= $storeSkylar.locationSchedule.LocalStore.end and $time >= $storeSkylar.locationSchedule.LocalStore.start and $time <= $storeSkylar.locationSchedule.LocalStore.end)
or ($storeSkylar.locationSchedule.LocalStore.start > $storeSkylar.locationSchedule.LocalStore.end and ($time >= $storeSkylar.locationSchedule.LocalStore.start or $time <= $storeSkylar.locationSchedule.LocalStore.end))>>
<<if _interaction.limit > ($storeSkylar.dailyInteractions[_type] or 0)>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Welcome to the Local Store. Seems like Skylar is working today.</p>
<<set State.track("LocalStore")>>
<</if>>
<div class="menu-buttons">
[[Leave the Store->CarolHouse]]
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Living Room">
</div>
<p class="environment-text">
Stepping inside, the familiar scent of Aunt Carol's home fills the air. The living room is cozy, just as I remember it.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
I hope you're hungry, dear. I made your favorite dish for dinner.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
That sounds amazing. It’s been too long since I had a homemade meal.
</div>
</div>
<p class="narrative-text">
But before heading inside, I need to grab my bag from the porch. There are a few suitcases here... which one is mine?
</p>
<div class="game-challenge">
<h3>Pick Your Bag</h3>
<p>Choose the correct bag to continue.</p>
<div class="answer-options">
<<button "Red Suitcase">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">This isn't mine... it feels way too heavy.</p>
<</replace>>
<</button>>
<<button "Blue Backpack">>
<<replace "#challenge-response">>
<p id="challenge-response" class="correct-answer">Yes! This is my bag. Time to head inside.</p>
<<set $missions["001"].status to 1>>
<<set $player.love to $player.love + 5>>
<div class="menu-buttons">
[[Continue Inside->CarolHouse]]
<<set $time to $time + 1>>
</div>
<</replace>>
<</button>>
<<button "Black Duffel Bag">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">This isn't mine... where did I put it?</p>
<</replace>>
<</button>>
</div>
<div id="challenge-response"></div>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/house/opening_door.gif" alt="Open Door">
</div>
<p class="environment-text">
The door opens before I can even knock. Aunt Carol stands there, smiling warmly.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
Oh, look at you! It's been so long! Come here, give your aunt a hug.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Hey, Aunt Carol! I've missed you.
</div>
</div>
<p class="narrative-text">
Her embrace is warm, filled with the scent of her familiar perfume. It brings back memories of summers spent here.
</p>
<div class="image-sequence">
<div class="image-container">
<img src="img/chars/carol/etc/carol_hug.gif" alt="Carol Hugging Player">
<p class="image-caption">Aunt Carol shares a warm moment.</p>
</div>
</div>
<br>
<div class="game-choice">
<h3>How do you respond?</h3>
<div class="answer-options">
<<button "Hug her back warmly">>
<<replace "#response">>
<p id="response" class="positive-response">She smiles, clearly happy to see me.</p>
<<set $player.love to $player.love + 5>>
<</replace>>
<</button>>
<<button "Act shy and reserved">>
<<replace "#response">>
<p id="response" class="neutral-response">She chuckles, patting my back.</p>
<</replace>>
<</button>>
</div>
<div id="response"></div>
</div>
<div class="menu-buttons">
<<set $scenes.Greeting.status to $scenes.Greeting.status to 1>>
[[Continue->Arrival]]
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/kitchen/dinner_table_01.jpg" alt="Dinner Table Set">
</div>
<p class="environment-text">
The kitchen is warm and inviting, the aroma of home-cooked food filling the air. The dinner table is set beautifully, a comforting sight after the journey.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
Took you long enough to get settled, sleepyhead! Trouble wrestling with your bags, were we? Dinner's getting cold, but knowing you, you'll devour it anyway.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Sorry, Aunt Carol, just getting my bearings. Wow, is that...?
</div>
</div>
<p class="narrative-text">
My eyes land on the steaming dish in the center of the table. It's my absolute favorite sandwich – Aunt Carol always knew how to make me feel at home.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
(Chuckles softly) Your favorite, just like always. I know how much you love my egg sandwich. Come on, sit down, don't just stand there gawking.
</div>
</div>
<p class="narrative-text">
Aunt Carol gestures to a chair, then picks up her own fork. She starts to eat, and something in the way she moves catches my attention.
</p>
<div class="environment-container">
<div class="environment-image">
<video width="640" height="480" controls autoplay loop muted>
<source src="img/chars/carol/eating/carol_eating_001.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<p class="environment-text">
Her lips wrap around the fork, sucking in the noodles with a slow, deliberate motion. Her eyes meet mine over the rim of the fork, a playful smirk dancing on her lips. It's just eating... but the way she does it... it feels charged, suggestive.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
Something wrong, honey? You staring at your Aunt like you've never seen someone eat before? Or is it just *that* good?
</div>
</div>
<br>
<div class="menu-buttons">
<<set $scenes.Greeting.status to $scenes.KitchenPreparation.status to 1>>
[[Continue to the Living Room->LivingRoom]]
</div>
</div><<set $randomNumber to Math.floor(Math.random() * 4) + 1>>
<<set $auntCarol.dailyInteractions.talk to $auntCarol.dailyInteractions.talk + 1>>
<<set $auntCarol.love to $auntCarol.love + $auntCarol.interactions.talk.stats.love>>
<<set $auntCarol.lust to $auntCarol.lust + $auntCarol.interactions.talk.stats.lust>>
<div class="game-container">
<<set _dialogueOptions to [
{
carol: "So, tell me, what's been on your mind since you got here? Don't hold back...",
player: "Just enjoying being here with you, Aunt Carol."
},
{
carol: "You remember that time you got caught sneaking into the pool at midnight? You were so embarrassed, but I thought it was adorable. Still makes me smile.",
player: "Oh god, Aunt Carol, you still remember that?!"
},
{
carol: "This weekend is all about unwinding and having some fun. Is there anything *special* you've been fantasizing about, honey?",
player: "(Slightly flustered) Uh, not really, just... hanging out."
},
{
carol: "I was wondering... do you think I've changed much since you last saw me? Be honest!",
player: "You look... amazing, Aunt Carol. Really amazing."
}
]>>
<<set $randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<!-- Corrigindo caminho da imagem -->
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
<<print $randomDialogue.carol>>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Corrigindo caminho da imagem -->
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<print $randomDialogue.player>>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="640" height="480" controls autoplay loop muted>
<<if $randomNumber == 1>>
<source src="img/chars/carol/talk/carol_talk.mp4" type="video/mp4">
<<elseif $randomNumber == 2>>
<source src="img/chars/carol/talk/carol_talk_2.mp4" type="video/mp4">
<<elseif $randomNumber == 3>>
<source src="img/chars/carol/talk/carol_talk_3.mp4" type="video/mp4">
<<else>>
<source src="img/chars/carol/talk/carol_talk_4.mp4" type="video/mp4">
<</if>>
Your browser does not support the video tag.
</video>
</div>
<p class="environment-text">
Aunt Carol looks at you, ready to chat. What will she talk about this time?
</p>
</div>
<br>
<div class="menu-buttons">
[[Return to Carol's House->CarolHouse]]
</div>
</div><<set $randomNumber to Math.floor(Math.random() * 8) + 1>> <!-- Número aleatório 1-8 -->
<<set $auntCarol.dailyInteractions.flirt to $auntCarol.dailyInteractions.flirt + 1>>
<<set $auntCarol.love to $auntCarol.love + $auntCarol.interactions.flirt.stats.love>>
<<set $auntCarol.lust to $auntCarol.lust + $auntCarol.interactions.flirt.stats.lust>>
<div class="game-container">
<<set _dialogueOptions to [
{
carol: "You know, I've been noticing how much you've... filled out since I last saw you. It's a *good* look on you.",
player: "(Blushing) Aunt Carol! You can't just say things like that."
},
{
carol: "Is it getting hot in here, or is it just you standing so close? Maybe we should cool off... together?",
player: "I... uh... I hadn't really noticed the temperature."
},
{
carol: "Tell me, what's the naughtiest thought that's crossed your mind since you arrived? Don't be shy, I can handle it.",
player: "I... I couldn't possibly say."
},
{
carol: "I've always thought you had such kissable lips. Have you ever been told that before, or am I the first?",
player: "(Swallowing hard) Well, no one quite as... direct as you, Aunt Carol."
},
{
carol: "You have this look in your eyes... like you're thinking about something you shouldn't. Am I right? Go on, tell your Aunt Carol all about it...",
player: "Maybe... maybe I am thinking a few things."
}
]>>
<<set $randomDialogue to _dialogueOptions.random()>> <!-- Variável corrigida para $ -->
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
<<print $randomDialogue.carol>>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<print $randomDialogue.player>>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="640" height="480" controls autoplay loop muted>
<<if $randomNumber == 1>>
<source src="img/chars/carol/flirt/carol_flirt.mp4" type="video/mp4">
<<elseif $randomNumber == 2>>
<source src="img/chars/carol/flirt/carol_flirt_2.mp4" type="video/mp4">
<<elseif $randomNumber == 3>>
<source src="img/chars/carol/flirt/carol_flirt_3.mp4" type="video/mp4">
<<elseif $randomNumber == 4>>
<source src="img/chars/carol/flirt/carol_flirt_4.mp4" type="video/mp4">
<<elseif $randomNumber == 5>>
<source src="img/chars/carol/flirt/carol_flirt_5.mp4" type="video/mp4">
<<elseif $randomNumber == 6>>
<source src="img/chars/carol/flirt/carol_flirt_6.mp4" type="video/mp4">
<<elseif $randomNumber == 7>>
<source src="img/chars/carol/flirt/carol_flirt_7.mp4" type="video/mp4">
<<else>>
<source src="img/chars/carol/flirt/carol_flirt_8.mp4" type="video/mp4">
<</if>> <!-- Corrigido o fechamento do <<if>> -->
Your browser does not support the video tag.
</video>
</div>
<p class="environment-text">
Aunt Carol leans in, a playful glint in her eyes. Time for some flirtation...
</p>
</div>
<br>
<div class="menu-buttons">
[[Return to Carol's House->CarolHouse]]
</div>
</div>
<div class="game-container">
<div class="environment-container">
<p class="narrative-text">
The kitchen smells of fresh herbs and spices. The sink is filled with dishes from the delicious meal Aunt Carol prepared.
</p>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face">
</div>
<div class="dialog-text carol">
Sweetheart, would you mind helping out with the dishes? I'll make you dessert later as a reward!
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Of course, Aunt Carol! But… where do you keep the dish soap again?
</div>
</div>
<div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/etc/chores/wash_dish.gif" alt="Washing Dishes">
</div>
<p class="narrative-text">
Time to get started — but first, you need to grab the right items for the task. Aunt Carol’s kitchen is a bit of a maze...
</p>
</div>
</div>
<div class="game-challenge">
<h3>Find the Cleaning Tools</h3>
<p>Which items do you need to wash the dishes properly?</p>
<div class="answer-options">
<<button "Dish Soap & Sponge">>
<<replace "#challenge-response">>
<p id="challenge-response" class="correct-answer">Perfect! Ready to tackle this mountain of dishes.</p>
<<set $missions["002"].status to 1>>
<<set $player.energy to $player.energy - 5>>
<<set $player.love to $player.love + 2>>
<div class="menu-buttons">
[[Finish Cleaning->CarolHouse]]
<<set $missions["002"].status to 1>>
<<set $time to $time + 1>>
</div>
<</replace>>
<</button>>
<<button "Toothbrush & Shampoo">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">Uh… that’s not quite right. Aunt Carol raises an eyebrow.</p>
<</replace>>
<</button>>
<<button "Broom & Mop">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">That’s for the floor, not the dishes!</p>
<</replace>>
<</button>>
</div>
<div id="challenge-response"></div>
<div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem estática da piscina precisando de limpeza -->
<img src="img/layout/pool/pool_dirty_small.webp" alt="Pool needs cleaning">
</div>
<p class="narrative-text">
The sun beats down on the pool area. While the water looks inviting, a layer of leaves and debris floats on the surface, spoiling the perfect blue. Aunt Carol is lounging nearby, sunglasses on, looking relaxed.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_relaxed.png" alt="Carol Relaxed Face">
</div>
<div class="dialog-text carol">
Ah, perfect timing, sweetheart. Could you be a dear and skim the pool for me? It's gotten a bit messy, and frankly, I'm too comfortable to move right now. There might be a little something extra in it for you...
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Sure thing, Aunt Carol. Anything to help out. Where do you keep the cleaning stuff for the pool?
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<!-- GIF/Vídeo de alguém limpando a piscina ou pegando a rede -->
<img src="img/etc/chores/pool_skimming_start.gif" alt="Starting Pool Cleaning">
</div>
<p class="narrative-text">
Aunt Carol points towards the pool shed. Time to find the right tool for the job before she gets impatient... or decides to "help" in her own way.
</p>
</div>
<div class="game-challenge">
<h3>Grab the Cleaning Tool</h3>
<p>Which tool is needed to skim the leaves off the pool surface?</p>
<div class="answer-options">
<<button "Pool Skimmer Net">>
<<replace "#challenge-response">>
<p id="challenge-response" class="correct-answer">This looks like the right tool. Time to get this pool sparkling clean!</p>
<!-- Update game state for completing the mission -->
<<set $missions["003"].status to 1>>
<<set $player.energy to $player.energy - 10>> /* Pool cleaning is tiring! */
<<set $auntCarol.love to $auntCarol.love + $missions["003"].stats.love>> /* Love +15 */
<<set $player.money to $player.money + $missions["003"].stats.money>> /* Money +20 */
<<set $time to $time + 1>> /* Task takes 1 hour */
<div class="menu-buttons">
[[Finish Cleaning and Return->CarolHouse]]
</div>
<</replace>>
<</button>>
<<button "Garden Hose">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">"Trying to spray the leaves away, honey? Cute, but not quite effective," Aunt Carol chuckles from her chair.</p>
<</replace>>
<</button>>
<<button "Broom">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">"That's for the patio, silly. Unless you're planning on sweeping the water?" She gives you a teasing look.</p>
<</replace>>
<</button>>
</div>
<div id="challenge-response"></div> <!-- Response will appear here -->
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem estática da sala de estar precisando de uma arrumada leve -->
<img src="img/layout/livingroom/livingroom_cluttered_small.jpg" alt="Living Room needs tidying">
</div>
<p class="narrative-text">
The morning sun shines into the living room, highlighting some dust motes and revealing a bit of clutter from last night. A few magazines lie on the coffee table, and the sofa cushions are slightly askew. Aunt Carol is sitting comfortably in an armchair, looking thoughtful.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_thinking.jpg" alt="Carol Thinking Face"> <!-- Sugestão de nova imagem de rosto -->
</div>
<div class="dialog-text carol">
Morning, dear. You know, this room could use a quick touch-up. Would you mind straightening things up a bit? Just the cushions and magazines mainly. It makes the whole place feel fresher, don't you think? I'd do it, but I was just getting lost in thought here...
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Of course, Aunt Carol. Happy to help make the place feel nice. I'll get right on it.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<!-- GIF/Vídeo de alguém arrumando almofadas ou revistas -->
<img src="img/etc/chores/tidying_livingroom.webp" alt="Tidying up the living room">
</div>
<p class="narrative-text">
She gives you a warm, appreciative smile. Okay, just a quick tidy. What's the most logical first step to make the room look better quickly?
</p>
</div>
<div class="game-challenge">
<h3>Quick Tidy Strategy</h3>
<p>What should you focus on first to make the living room look neater fast?</p>
<div class="answer-options">
<<button "Straighten cushions & stack magazines">>
<<replace "#challenge-response">>
<p id="challenge-response" class="correct-answer">Good thinking. Clearing the main surfaces and straightening the sofa makes an immediate difference. Easy peasy.</p>
<!-- Update game state for completing the mission -->
<<set $missions["004"].status to 1>>
<<set $player.energy to $player.energy - 8>> /* Cost for tidying */
<<set $auntCarol.love to $auntCarol.love + $missions["004"].stats.love>> /* Love +10 */
<<set $player.money to $player.money + $missions["004"].stats.money>> /* Money +15 */
<<set $time to $time + 1>> /* Task takes 1 hour */
<div class="menu-buttons">
[[Finish Tidying and Return->CarolHouse]]
</div>
<</replace>>
<</button>>
<<button "Start dusting the lampshades">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">"Oh, ambitious! Dusting is great, but let's handle the clutter first, okay?" Aunt Carol suggests gently, still looking relaxed.</p>
<</replace>>
<</button>>
<<button "Check behind the sofa for lost items">>
<<replace "#challenge-response">>
<p id="challenge-response" class="wrong-answer">"Playing detective, are we?" She chuckles. "Just focus on the visible stuff for now, honey. No need for a deep clean."</p>
<</replace>>
<</button>>
</div>
<div id="challenge-response"></div> <!-- Response will appear here -->
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bedroom_carol/bedroom_small.jpg" alt="Carol's Bedroom in the Afternoon">
</div>
<p class="narrative-text">
You find Aunt Carol relaxing in her bedroom, the afternoon light filtering through the blinds. She's fiddling with her phone, a slight frown on her face.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_puzzled.jpg" alt="Carol Puzzled Face">
</div>
<div class="dialog-text carol">
Oh, hey there. You know, I've been trying to clear some space on this phone, delete some old photos... but I swear, technology just gets more complicated! Could you give me a hand, sweetie? Just get rid of some duplicates or blurry ones?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
No problem, Aunt Carol. Let me take a look. I can probably sort it out quickly.
</div>
</div>
<p class="narrative-text">
She hands you her phone with a grateful smile. You unlock it and start navigating through her photo gallery. There are lots of scenic shots, family pictures... and then, tucked away, you stumble upon a folder simply labeled "Private". Curiosity gets the better of you...
</p>
<!-- ===== Carrossel HTML (Versão simplificada) ===== -->
<div id="carousel" class="carousel">
<img src="img/chars/carol/polaroids/carol_polaroid_1.jpg" class="carousel-img active" alt="Carol Polaroid 1 - Beach day memories...">
<img src="img/chars/carol/polaroids/carol_polaroid_2.jpg" class="carousel-img" alt="Carol Polaroid 2 - Feeling playful...">
<img src="img/chars/carol/polaroids/carol_polaroid_3.jpg" class="carousel-img" alt="Carol Polaroid 3 - Just relaxing...">
</div>
<!-- Controles do Carrossel -->
<div class="carousel-controls">
<<link "◀ Previous">>
<<run window.carouselPrevious()>>
<</link>>
<<link "Next ▶">>
<<run window.carouselNext()>>
<</link>>
</div>
<!-- ===== Fim do Carrossel HTML ===== -->
<p class="narrative-text">
Your heart beats a little faster looking at these. They definitely weren't meant for your eyes... After lingering perhaps a bit too long, you remember why you have the phone.
</p>
<!-- Seção para completar a missão (Controlada pelo SugarCube) -->
<div id="completion-section" style="text-align: center; margin-top: 25px;">
<!-- O Link do SugarCube que INICIA a conclusão da missão -->
<<link "Finish 'Deleting' Photos">>
<!-- O código DENTRO do link SÓ executa ao clicar -->
<<replace "#completion-section">>
<p class="narrative-text" style="margin-bottom: 15px;">You quickly tap delete on a few genuinely blurry photos and hand the phone back to Carol, trying to look nonchalant.</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_puzzled.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
All done? Thank you so much, dear! You're a lifesaver. See? That wasn't so hard. You deserve a little reward for your effort.
</div>
</div>
<!-- Atualiza o estado do jogo AQUI -->
<<set $missions["005"].status to 1>>
<<set $player.energy to $player.energy - 5>>
<<set $auntCarol.love to $auntCarol.love + 15>>
<<set $auntCarol.corruption to $auntCarol.corruption + 5>>
<<set $time to $time + 1>>
<!-- Botão SugarCube para sair da passagem APÓS completar -->
<div class="menu-buttons" style="margin-top: 15px;">
[[Return to the Hallway->CarolHouse]]
</div>
<</replace>>
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem do quarto da Carol, talvez ela perto do guarda-roupa -->
<img src="img/layout/bedroom_carol/bedroom_carol_wardrobe.webp" alt="Carol's Bedroom with Wardrobe">
</div>
<p class="narrative-text">
You enter Carol's bedroom again. This time, she's standing by her large wardrobe, door slightly ajar, tapping her chin thoughtfully.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Usar a face pensativa ou uma nova face "indecisa" -->
<img src="img/chars/carol/face/carol_face_thinking.jpg" alt="Carol Thinking Face">
</div>
<div class="dialog-text carol">
Oh, perfect timing! I was just trying to organize this wardrobe a bit... things get so jumbled up. Could you perhaps reach that box on the top shelf for me? Or maybe just see if you can find that blue scarf I love? I swear it vanished in here.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Sure, Aunt Carol. Let me take a look inside. I'm pretty good at finding lost things.
</div>
</div>
<p class="narrative-text">
She steps aside, giving you access to the wardrobe. It smells faintly of her perfume and cedar wood. As you rummage through neatly folded clothes and hanging dresses, your hand brushes against a softer box tucked away in the back, behind some sweaters... Intrigued, you pull it out slightly.
</p>
<!-- ===== Carrossel HTML (Adaptado para WardrobeHelp) ===== -->
<div id="carousel" class="carousel">
<!-- Item 1: Brinquedo Erótico 1 -->
<img src="img/etc/toys/toy_1.jpg" class="carousel-img active" alt="A smooth, curved personal massager">
<!-- Item 2: Brinquedo Erótico 2 -->
<img src="img/etc/toys/toy_2.webp" class="carousel-img" alt="A small, discreet bullet vibrator">
<!-- Item 3: Polaroid 4 -->
<img src="img/chars/carol/polaroids/carol_polaroid_4.jpeg" class="carousel-img" alt="Carol Polaroid 4 - Lounging suggestively">
</div>
<!-- Controles do Carrossel (Usando as funções JS globais) -->
<div class="carousel-controls">
<<link "◀ Previous">>
<<run window.carouselPrevious()>>
<</link>>
<<link "Next ▶">>
<<run window.carouselNext()>>
<</link>>
</div>
<!-- ===== Fim do Carrossel HTML ===== -->
<p class="narrative-text">
Well, this definitely isn't a scarf. Your eyes widen as you cycle through the contents of the box. It seems Aunt Carol has some secrets hidden away. A hot flush creeps up your neck as you quickly put the box back where you found it, pretending you didn't see anything.
</p>
<!-- Seção para completar a missão -->
<div id="completion-section" style="text-align: center; margin-top: 25px;">
<!-- Link do SugarCube para iniciar a conclusão -->
<<link "Finish 'Helping' with the Wardrobe">>
<!-- Código DENTRO do link -->
<<replace "#completion-section">>
<p class="narrative-text" style="margin-bottom: 15px;">You manage to find the blue scarf (it was snagged on a hanger) and hand it to her, keeping your expression neutral.</p>
<div class="dialog-container">
<div class="dialog-image">
<!-- Usar face sorrindo ou agradecida -->
<img src="img/chars/carol/face/carol_face_smiling.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
There it is! Oh, thank you, sweetheart! I knew you'd find it. You have a knack for things like that. Come on, let's get out of this room for now.
</div>
</div>
<!-- Atualiza o estado do jogo AQUI -->
<<set $missions["006"].status to 1>>
<<set $player.energy to $player.energy - 7>> /* Custo de energia */
<<set $auntCarol.love to $auntCarol.love + 15>> /* Recompensa de amor */
<<set $auntCarol.corruption to $auntCarol.corruption + 10>> /* Recompensa de corrupção */
<<set $time to $time + 1>> /* Avanço do tempo */
<!-- Botão SugarCube para sair -->
<div class="menu-buttons" style="margin-top: 15px;">
[[Return to the Hallway->CarolHouse]]
</div>
<</replace>>
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem da Sala, Carol relaxando, talvez com uma revista -->
<img src="img/layout/livingroom/livingroom_carol_relaxing.jpg" alt="Carol relaxing in the Living Room">
</div>
<p class="narrative-text">
You find Aunt Carol lounging comfortably on the living room sofa, flipping through a magazine. She looks up as you enter, a warm smile gracing her lips.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_smiling.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
Oh, there you are, sweetie. Listen, would you mind doing a small errand for me? I ordered something... a little treat for myself... and it arrived at the Local Store. Could you possibly pop over and pick it up for me sometime this morning or early afternoon? Skylar knows it's for me.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
A treat? Sure, Aunt Carol, no problem at all. I can head over there soon. Consider it done.
</div>
</div>
<div class="environment-container">
<p class="narrative-text">
She gives you a grateful nod, her eyes perhaps lingering on you a moment longer than necessary. What kind of "treat" would she order?
</p>
</div>
<!-- Conclusão da Missão 007 - Aceitar o Pedido -->
<div id="completion-section" style="text-align: center; margin-top: 25px;">
<p style="font-style: italic; color: #D4AF37; margin-bottom: 15px;">You've agreed to pick up the package. The next step is to visit the Local Store.</p>
<!-- Botão para confirmar e voltar -->
<<link "Okay, I'll head there when I can">>
<<set $missions["007"].status to 1>> /* Marca a missão de pedir como concluída */
<<set $auntCarol.love to $auntCarol.love + 5>> /* Pequeno bônus por concordar */
<<goto "LivingRoom">>
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem do interior da loja, Skylar no balcão -->
<img src="img/layout/store/store_inside_skylar.jpg" alt="Inside Local Store with Skylar">
</div>
<p class="narrative-text">
You arrive at the Local Store. Skylar is behind the counter, organizing some items with surprising efficiency. She looks up and gives you a quick, professional smile.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Hi Skylar. I'm here to pick up a package for Carol? My aunt? She said you'd have it.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Imagem de Skylar, talvez um pouco curiosa ou neutra -->
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Neutral Face">
</div>
<div class="dialog-text skylar">
Oh, right, Carol's nephew! Yes, she called ahead. Hang on... She pulls out a discreetly wrapped, medium-sized box from under the counter. Hmm, Carol's been ordering quite a few... *interesting* things lately. This one feels a bit delicate.
</div>
</div>
<!-- Mini-Interação / Desafio com Skylar -->
<div class="game-choice" style="margin-top: 20px;">
<h3>Skylar's Comment</h3>
<p>"You must be taking good care of your aunt if she's treating herself like this," Skylar adds with a faint smirk. How do you respond?</p>
<div class="answer-options" id="skylar-response-options">
<<button "Just helping out where I can.">>
<<replace "#skylar-response-options">>
<p class="narrative-text" style="color: #F1C40F; margin-top:10px;">Skylar just nods, handing you the package. "Alright then. Here you go."</p>
<!-- Atualiza o estado - Pegou o pacote (sem bônus Skylar) -->
<<set $missions["007.2"].status to 1>>
<<run $player.inventory.push("CarolPackage")>> /* Adiciona item ao inventário */
<<set $time to $time + 1>> /* Tempo gasto na loja */
<div class="menu-buttons" style="margin-top: 15px;">
[[Take the Package and Leave->LocalStore]] /* Volta para a visão da loja */
</div>
<</replace>>
<</button>>
<<button "(Slightly flustered) Uh, yeah, she deserves it.">>
<<replace "#skylar-response-options">>
<p class="narrative-text" style="color: #E74C3C; margin-top:10px;">Skylar raises an eyebrow slightly, a flicker of amusement in her eyes. "Sure she does. Here's the package."</p>
<!-- Atualiza o estado - Pegou o pacote (sem bônus Skylar) -->
<<set $missions["007.2"].status to 1>>
<<run $player.inventory.push("CarolPackage")>>
<<set $time to $time + 1>>
<div class="menu-buttons" style="margin-top: 15px;">
[[Take the Package and Leave->LocalStore]]
</div>
<</replace>>
<</button>>
<<button "(Play along slightly) Trying my best. She keeps me on my toes.">>
<<if $player.charisma >= 7>> /* Exemplo de verificação de stat */
<<replace "#skylar-response-options">>
<p class="narrative-text" style="color: #2ECC71; margin-top:10px;">Skylar lets out a small laugh. "I bet she does. Well, enjoy... whatever is in here." She winks as she hands over the box.</p>
<!-- Atualiza o estado - Pegou o pacote (COM bônus Skylar) -->
<<set $missions["007.2"].status to 1>>
<<run $player.inventory.push("CarolPackage")>>
<<set $storeSkylar.love to ($storeSkylar.love || 0) + 3>> /* Bônus Skylar Love */
<<set $time to $time + 1>>
<div class="menu-buttons" style="margin-top: 15px;">
[[Take the Package and Leave->LocalStore]]
</div>
<</replace>>
<<else>>
<<replace "#skylar-response-options">>
<p class="narrative-text" style="color: #F1C40F; margin-top:10px;">You try to sound smooth, but Skylar just gives a polite, unconvinced smile. "Right. Here's the package."</p>
<!-- Atualiza o estado - Pegou o pacote (sem bônus Skylar) -->
<<set $missions["007.2"].status to 1>>
<<run $player.inventory.push("CarolPackage")>>
<<set $time to $time + 1>>
<div class="menu-buttons" style="margin-top: 15px;">
[[Take the Package and Leave->LocalStore]]
</div>
<</replace>>
<</if>>
<</button>>
</div>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem da Sala, Carol talvez esperando ansiosamente -->
<img src="img/layout/livingroom/livingroom_carol_waiting.jpg" alt="Carol waiting in the Living Room">
</div>
<p class="narrative-text">
You return to the living room, holding the package Skylar gave you. Aunt Carol looks up immediately, her eyes lighting up with anticipation.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Got your package, Aunt Carol. Skylar said you'd been ordering some interesting things.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Imagem de Carol, talvez levemente corada ou sorrindo maliciosamente -->
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Blushing Face">
</div>
<div class="dialog-text carol">
Oh, did she now? That girl needs to learn some discretion. But yes, thank you, sweetie! She reaches for the package eagerly, her fingers brushing against yours as she takes it. Let's see...
</div>
</div>
<p class="narrative-text">
She tears a small corner of the wrapping paper... revealing a glimpse of silky lace fabric in a deep crimson color before quickly covering it back up, though not before you catch sight of it. She glances at you, noticing your gaze.
</p>
<!-- Interação - Reação do Jogador -->
<div class="game-choice" style="margin-top: 20px;">
<h3>Your Reaction</h3>
<p>You saw a flash of what looks like expensive lingerie. How do you react?</p>
<div class="answer-options" id="delivery-reaction-options">
<<button "Look away quickly, pretend you saw nothing.">>
<<replace "#delivery-reaction-options">>
<div class="dialog-container" style="margin-top:10px;">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Pleased Face">
</div>
<div class="dialog-text carol">
(Smiling softly) Such a gentleman. Well, thank you again for fetching this for me. You've earned your reward.
</div>
</div>
<!-- Atualiza estado - Recompensa Padrão -->
<<set $missions["007.3"].status to 1>>
<<set $auntCarol.love to $auntCarol.love + 15>>
<<set $player.money to $player.money + 20>>
<<set $auntCarol.corruption to $auntCarol.corruption + 5>>
<<run $player.inventory.delete("CarolPackage")>> /* Remove o item */
<<set $time to $time + 1>> /* Tempo para entrega e interação */
<div class="menu-buttons" style="margin-top: 15px;">
[[Okay ->LivingRoom]]
</div>
<</replace>>
<</button>>
<<button "'Treating yourself to something nice, Aunt Carol?' (Teasing smile)">>
<<replace "#delivery-reaction-options">>
<div class="dialog-container" style="margin-top:10px;">
<div class="dialog-image">
<!-- Talvez uma face mais ousada/provocante -->
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly Face">
</div>
<div class="dialog-text carol">
(Chuckles, holding the package close) Maybe I am. A woman needs her little luxuries, doesn't she? Glad you approve... implicitly. Here's a little something for your trouble.
</div>
</div>
<!-- Atualiza estado - Recompensa com Bônus Corrupção -->
<<set $missions["007.3"].status to 1>>
<<set $auntCarol.love to $auntCarol.love + 15>>
<<set $player.money to $player.money + 20>>
<<set $auntCarol.corruption to $auntCarol.corruption + 8>> /* Corrupção Bônus */
<<run $player.inventory.delete("CarolPackage")>>
<<set $time to $time + 1>>
<div class="menu-buttons" style="margin-top: 15px;">
[[Interesting... ->LivingRoom]]
</div>
<</replace>>
<</button>>
<<button "(Stare for a second too long) That looks... nice.">>
<<replace "#delivery-reaction-options">>
<div class="dialog-container" style="margin-top:10px;">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_surprised.jpg" alt="Carol Surprised/Flustered Face">
</div>
<div class="dialog-text carol">
(Slightly flustered but recovers) Oh! Well... thank you, I suppose. It's just some... fabric. Anyway! Thank you for getting it! Here you go.
</div>
</div>
<!-- Atualiza estado - Recompensa com Bônus Corrupção Médio -->
<<set $missions["007.3"].status to 1>>
<<set $auntCarol.love to $auntCarol.love + 14>> /* Leve penalidade no amor por ser direto demais? */
<<set $player.money to $player.money + 20>>
<<set $auntCarol.corruption to $auntCarol.corruption + 7>> /* Corrupção Bônus Médio */
<<run $player.inventory.delete("CarolPackage")>>
<<set $time to $time + 1>>
<div class="menu-buttons" style="margin-top: 15px;">
[[Right... ->LivingRoom]]
</div>
<</replace>>
<</button>>
</div>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem da cozinha pela manhã/meio-dia, talvez com sol entrando -->
<img src="img/layout/kitchen/kitchen_small.jpg" alt="Kitchen - Bright Morning">
</div>
<p class="environment-text">
You finish wiping down the last of the counters after doing the dishes. The kitchen is quiet for a moment, filled with the bright morning/midday light. Suddenly, Aunt Carol bounces back into the room, humming a cheerful tune. Your eyes instinctively follow her. She's wearing a short, thin, silky nightgown that leaves little to the imagination... and it's quite clear she's wearing nothing underneath.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Feliz, talvez um pouco sonolenta mas energizada -->
<img src="img/chars/carol/face/carol_face_energetic.jpg" alt="Carol Energetic/Happy Face">
</div>
<div class="dialog-text carol">
All clean! You really are a fantastic help, you know that? Makes my morning so much brighter! I feel like I could dance!
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Dance isn't quite the word I'd use for... that.
</div>
</div>
<p class="narrative-text">
And "dance" she does, in her own way. She moves towards the coffee machine, her body full of a playful energy. She bounces lightly on the balls of her feet, reaching for a mug, seemingly oblivious – or perhaps pointedly aware – of the effect she's having.
</p>
<!-- O Vídeo Principal da Cena -->
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 640px; border-radius: 8px;" controls autoplay loop muted playsinline>
<source src="img/chars/carol/flirt/alexapearl_flirt_bouncing.webm" type="video/webm">
<!-- Adicione outros formatos se tiver, como MP4 -->
<!-- <source src="img/chars/carol/flirt/alexapearl_flirt_bouncing.mp4" type="video/mp4"> -->
Your browser doesn't support embedded videos or the WEBM/MP4 format.
</video>
</div>
<p class="environment-text">
Every little bounce sends ripples through the thin fabric. Her breasts jiggle and sway freely, their weight and shape undeniable. The hardened tips of her nipples press insistently against the silk, creating exquisitely distracting focal points. She turns slightly, catching your wide-eyed stare, and her lips curve into a slow, knowing smirk.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Provocante, divertida -->
<img src="img/chars/carol/face/carol_face_teasing.jpg" alt="Carol Teasing Face">
</div>
<div class="dialog-text carol">
What's the matter, sweetie? Cat got your tongue? Or maybe you just need some coffee to wake up? Seems like *I'm* wide awake this morning... maybe it's contagious?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I... uh... Coffee sounds good, Aunt Carol.
</div>
</div>
<p class="narrative-text">
She laughs softly, a melodic sound that makes your stomach flutter, and turns back to the coffee machine, still moving with that same captivating rhythm. The air crackles with unspoken invitation.
</p>
<br>
<!-- Conclusão da Cena -->
<div class="menu-buttons">
<<set $scenes["KitchenFlirt"].status to 1>> /* Marca a cena como concluída */
<<set $auntCarol.love to $auntCarol.love + 10>> /* Recompensa de Love */
<<set $auntCarol.lust to $auntCarol.lust + 10>> /* Recompensa de Lust */
/* Cenas geralmente não avançam o tempo, a menos que envolvam uma ação específica */
[[Try to focus on the coffee...->Kitchen]] /* Retorna para a visão base da Cozinha */
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem da piscina agora limpa, sol forte do meio-dia -->
<img src="img/layout/pool/pool_sunny_clean.webp" alt="Pool - Sunny and Clean">
</div>
<p class="environment-text">
With the pool sparkling clean thanks to your efforts, the midday sun feels even more intense. You step back to admire your work, and notice Aunt Carol getting comfortable on one of the lounge chairs positioned perfectly in the sun. She sighs contentedly, laying out her towel.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Relaxada, talvez com óculos de sol no início -->
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Relaxed Face in Sun">
</div>
<div class="dialog-text carol">
Much better! Thanks again, sweetie. Now, if you'll excuse me, I'm going to catch some rays... Feel free to relax too, don't just stand there hovering unless you plan on offering oil massages? She winks playfully before settling down.
</div>
</div>
<p class="narrative-text">
You watch as she lies down on her stomach, facing away from you. With a casual, practiced motion, she reaches behind her back and unties the strings of her bikini top, letting it fall loosely beside her on the towel. She adjusts herself slightly, getting comfortable, her entire back now bare and exposed to the warm sun.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Okay... she definitely just took her top off. Right in front of me. Should I look away? ...Probably. Am I going to? ...Probably not.
</div>
</div>
<!-- O Vídeo Principal da Cena -->
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 640px; border-radius: 8px;" controls autoplay loop muted playsinline>
<source src="img/chars/carol/sunbathing/alexapearl_sunbathing.webm" type="video/webm">
<!-- <source src="img/chars/carol/sunbathing/alexapearl_sunbathing.mp4" type="video/mp4"> -->
Your browser doesn't support embedded videos or the WEBM/MP4 format.
</video>
</div>
<p class="environment-text">
You stand there, pretending to check your phone or gaze at the distant trees, but your eyes keep drifting back to her. The sun highlights the smooth skin of her back, the gentle curve of her spine leading down to the slight swell of her hips barely contained by her bikini bottoms. She stretches languidly, like a cat, then casually spreads her legs wider on the lounger, tapping her foot rhythmically. For a fleeting moment, as if adjusting her position, she shifts, lifting her torso slightly... offering a brief, heart-stopping glimpse of the side and underside curve of one of her breasts, the soft shadow beneath, before settling back down. Was that accidental? With Aunt Carol, it's getting harder to tell... and harder to look away.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Aqui poderia ser uma imagem dela deitada de lado, ou apenas manter o rosto anterior -->
<img src="img/chars/carol/face/carol_face_relaxed_sun.jpg" alt="Carol Relaxed Face in Sun">
</div>
<div class="dialog-text carol">
(Muffled slightly by the towel) Mmm, this sun feels amazing... You finding a good spot to relax too, honey?
</div>
</div>
<p class="narrative-text">
Her voice sounds lazy, relaxed, maybe even a little seductive. She doesn't turn around, leaving you to your observations.
</p>
<br>
<!-- Conclusão da Cena -->
<div class="menu-buttons">
<<set $scenes["PoolsideRelaxation"].status to 1>> /* Marca a cena como concluída */
<<set $auntCarol.lust to $auntCarol.lust + 20>> /* Recompensa de Lust (para Carol) */
<<set $auntCarol.corruption to $auntCarol.corruption + 10>> /* Recompensa de Corrupção (para Carol) */
/* Cenas de observação não avançam o tempo */
[[Try to tear your eyes away...->Pool]] /* Retorna para a visão base da Piscina */
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem da sala de estar agora arrumada -->
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Living Room - Tidy">
</div>
<p class="environment-text">
The living room looks much better now, tidy and refreshed thanks to your help. Aunt Carol beams, clearly pleased with the result. The atmosphere feels light and relaxed.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Satisfeita, Alegre -->
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Pleased Face">
</div>
<div class="dialog-text carol">
See? Doesn't it feel so much nicer in here now? You really worked wonders, sweetie. All this tidiness... it puts me in such a good, energetic mood! Makes me want to put on some music!
</div>
</div>
<p class="narrative-text">
Before you can really respond, she's already fiddling with her phone connected to a nearby speaker. A mischievous grin spreads across her face as a familiar, heavy beat fills the room – Nicki Minaj's "Anaconda". You notice she must have changed while you were busy; she's now wearing a pair of extremely tight, short athletic shorts. They hug her curves perfectly, and a deliberate-looking rip high up on the side of her left butt cheek offers a tantalizing glimpse of smooth, bare skin beneath.
</p>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Brincalhona, talvez mordendo o lábio -->
<img src="img/chars/carol/face/carol_face_smiling.jpg" alt="Carol Playful/Cheeky Face">
</div>
<div class="dialog-text carol">
(Laughing over the music) Oh, this song! Takes me back! It just makes you want to... move, doesn't it? Remember how everyone tried to do that dance? It looked so silly... or maybe... fun?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Fun isn't exactly the first word that comes to mind right now... Is she seriously going to...?
</div>
</div>
<!-- O Vídeo Principal da Cena -->
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<source src="img/chars/carol/tease/alexapearl_twerk_2.webm" type="video/webm">
<!-- <source src="img/chars/carol/tease/alexapearl_twerk_2.mp4" type="video/mp4"> -->
Your browser doesn't support embedded videos or the WEBM/MP4 format.
</video>
</div>
<p class="environment-text">
And then, turning so her back is mostly towards you, she does. She bends forward slightly, placing her hands on her thighs, and begins to move her hips to the insistent beat. It starts as almost a joke, a playful wiggle, but quickly becomes more deliberate, more fluid, undeniably sensual. Her backside moves with hypnotic rhythm, the tight shorts emphasizing every curve and jiggle. The tear in the fabric shifts with each movement, offering brief, pulse-pounding flashes of bare skin. She glances back over her shoulder, eyes locking with yours for a second, a sultry, challenging smirk playing on her lips before she turns her attention back to her provocative dance. The "playful" facade seems to be melting away rapidly.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<!-- Rosto da Carol - Seductive, Smirk -->
<img src="img/chars/carol/face/carol_face_energetic.jpg" alt="Carol Seductive Smirk Face">
</div>
<div class="dialog-text carol">
(Slightly breathless, turning back around) Phew! Okay, maybe I got a little carried away. This song still gets me going! Did you... enjoy the show? Or am I just embarrassing myself? Be honest!
</div>
</div>
<p class="narrative-text">
Her question hangs in the air, heavy with implication. She fans herself lightly, but her eyes stay fixed on you, waiting for a reaction. The energy in the tidy living room is now anything but calm.
</p>
<br>
<!-- Conclusão da Cena -->
<div class="menu-buttons">
<<set $scenes["LivingRoomInteraction"].status to 1>> /* Marca a cena como concluída */
<<set $auntCarol.love to $auntCarol.love + 10>> /* Recompensa de Love */
<<set $auntCarol.lust to $auntCarol.lust + 10>> /* Recompensa de Lust */
/* Cenas geralmente não avançam o tempo */
[[Stare speechless for a moment...->LivingRoom]] /* Retorna para a visão base da Sala */
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem do corredor escuro ou porta do quarto da Carol entreaberta -->
<img src="img/layout/bedroom_carol/hallway_night_door_ajar.jpg" alt="Hallway at night, Carol's door slightly open">
</div>
<p class="environment-text">
The house is quiet now, settled into the deep calm of late evening. Feeling tired from the trip and the day's events, you decide it's only polite to wish Aunt Carol a proper goodnight before heading to your own room. As you approach her bedroom door, you notice it's slightly ajar, a sliver of warm light spilling into the dimly lit hallway.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Should probably knock... but maybe she's already asleep? I'll just peek in quickly...
</div>
</div>
<p class="narrative-text">
Yielding to curiosity, you push the door open just a fraction more and peer inside. Your breath catches in your throat.
</p>
<!-- O Vídeo Principal da Cena -->
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 640px; border-radius: 8px;" controls autoplay loop muted playsinline>
<source src="img/chars/carol/tease/alexapearl_in_bed.webm" type="video/webm">
<!-- <source src="img/chars/carol/tease/alexapearl_in_bed.mp4" type="video/mp4"> -->
Your browser doesn't support embedded videos or the WEBM/MP4 format.
</video>
</div>
<p class="environment-text">
Aunt Carol is half-sitting, half-lying on her bed, turned mostly away from the door. She's wearing only a loose, oversized t-shirt that barely reaches her upper thighs, revealing long, smooth legs and a tantalizing glimpse of simple panties underneath. Her backside is angled towards you, and she seems completely lost in her own world. As you watch, frozen in the doorway, her hand moves... She gives her own plush buttock a firm, resonant smack, then playfully grabs and jiggles the soft flesh. A quiet sigh escapes her lips, a sound of pure, private pleasure. She repeats the motion, seemingly exploring her own curves with a lazy, sensual touch, completely unaware she has an audience.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Whoa... Okay. Definitely *not* interrupting this. She has no idea I'm here... I should get out. Now.
</div>
</div>
<p class="narrative-text">
Your face feels hot, and a strange mix of embarrassment and undeniable arousal floods through you. Seeing her like this, so unguarded and indulging in a private moment, feels intensely intimate... and incredibly forbidden. You carefully pull the door back to its original position, making sure not to make a sound, your heart pounding against your ribs.
</p>
<br>
<!-- Conclusão da Cena -->
<div class="menu-buttons">
<<set $scenes["Bedtime"].status to 1>> /* Marca a cena como concluída */
<<set $auntCarol.lust to $auntCarol.lust + 15>> /* Recompensa de Lust (para Carol) */
<<set $auntCarol.corruption to $auntCarol.corruption + 5>> /* Recompensa de Corrupção (para Carol) */
/* Cenas de observação não avançam o tempo */
[[Retreat quietly back to the hallway...->CarolHouse]] /* Retorna para a visão base da Casa */
</div>
</div><<set _wardrobeStage to _wardrobeStage || 0 >> /* Inicializa ou mantém o estágio */
<div class="game-container">
<!-- ===== ESTÁGIO 0: INTRODUÇÃO ===== -->
<<if _wardrobeStage === 0>>
<div class="changing-scene-stage" id="stage-0">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem do quarto, talvez Carol segurando uns biquínis -->
<img src="img/layout/bedroom_carol/bedroom_carol_holding_clothes.jpg" alt="Carol holding clothes in her bedroom">
</div>
<p class="environment-text">
After you successfully found her scarf (or whatever she asked for), Aunt Carol gives you a bright, appreciative smile. Her eyes linger on you for a moment before glancing towards a pile of colourful swimwear on her bed.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_thinking.jpg" alt="Carol Thinking Face">
</div>
<div class="dialog-text carol">
You know, while you're here... I was thinking of sorting out my swimwear for the summer. I bought a few new bikinis online, but I'm never sure how they actually look *on*. Would you mind giving me your honest opinion? It's so hard to judge by yourself in the mirror.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Give my opinion on Aunt Carol in bikinis? Is she serious? ...Okay, deep breaths.
(Aloud) Uh, sure, Aunt Carol. If you think my opinion would help, I guess I can... take a look.
</div>
</div>
<div class="menu-buttons" style="margin-top: 20px;">
<<link "Wait for her to try the first one..." >>
<<set _wardrobeStage = 1>>
<<replace "#stage-0">><<include "WardrobeHelpScene">><</replace>> /* Carrega o próximo estágio */
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 1: BIKINI PRETO ===== -->
<<if _wardrobeStage === 1>>
<div class="changing-scene-stage" id="stage-1">
<p class="narrative-text">
She ducks behind a privacy screen (or into the ensuite bathroom briefly - adapt as needed) and emerges a moment later wearing a simple, elegant black bikini. She walks towards you, turning slowly.
</p>
<div class="changing-video-container">
<video controls autoplay loop muted playsinline>
<source src="img/chars/carol/change_clothes/alexapearl_changing_bikini_black.mp4" type="video/mp4">
<!-- Adicione .webm se tiver -->
Your browser doesn't support embedded videos.
</video>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_posing_1.jpg" alt="Carol Posing Face">
</div>
<div class="dialog-text carol">
So? What do you think of this one? Classic black. Is it too... boring? Or does it suit me?
</div>
</div>
<p class="player-reaction">It looks good. Very... classy. But maybe a little safe compared to what you imagined.</p>
<div class="menu-buttons">
<<link "'It looks great, very elegant.'">>
<<set _wardrobeStage = 2>>
<<replace "#stage-1">><<include "WardrobeHelpScene">><</replace>>
<</link>>
<<link "'Hmm, it's nice, but maybe something with more color?'">>
<<set _wardrobeStage = 2>>
<<set $auntCarol.lust += 2>> /* Pequeno bônus por pedir algo mais ousado */
<<replace "#stage-1">><<include "WardrobeHelpScene">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 2: BIKINI VERMELHO ===== -->
<<if _wardrobeStage === 2>>
<div class="changing-scene-stage" id="stage-2">
<p class="narrative-text">
She nods at your comment. "Okay, good feedback. Let me try the red one then, it's a bit bolder." She disappears again briefly and returns in a vibrant red bikini. This one definitely has less fabric, cut higher on the hips and lower on the chest.
</p>
<div class="changing-video-container">
<video controls autoplay loop muted playsinline>
<source src="img/chars/carol/change_clothes/alexapearl_changing_bikini_red.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_posing_2.jpg" alt="Carol Confident Posing Face">
</div>
<div class="dialog-text carol">
Now *this* one feels a bit more fun! Does the red work on me? Is it... too much? Or just enough?
</div>
</div>
<p class="player-reaction">Okay, wow. That definitely catches the eye. It leaves much less to the imagination, hugging her figure tightly. Your throat feels a bit dry.</p>
<div class="menu-buttons">
<<link "'Wow, Aunt Carol! That red looks amazing on you!'">>
<<set $auntCarol.love += 3>>
<<set _wardrobeStage = 3>>
<<replace "#stage-2">><<include "WardrobeHelpScene">><</replace>>
<</link>>
<<link "'It's... very red. Definitely makes a statement.'">>
<<set _wardrobeStage = 3>>
<<replace "#stage-2">><<include "WardrobeHelpScene">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 3: BIKINI AZUL & TOP REMOVAL ===== -->
<<if _wardrobeStage === 3>>
<div class="changing-scene-stage" id="stage-3">
<p class="narrative-text">
"Right? Okay, one more then. This blue one is... well, you'll see." She vanishes and reappears. This 'bikini' is barely there – tiny triangles of blue fabric connected by thin strings. It looks at least a size too small, pressing into her soft flesh and causing her ample breasts to spill generously over the top edges.
</p>
<div class="changing-video-container">
<video controls autoplay loop muted playsinline>
<source src="img/chars/carol/change_clothes/alexapearl_changing_bikini_blue.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_posing_3.jpg" alt="Carol Provocative Posing Face">
</div>
<div class="dialog-text carol">
(Biting her lip slightly) Okay, this one... might be a *bit* much even for me. Or maybe it's perfect for catching attention? What's the verdict, judge?
</div>
</div>
<p class="player-reaction">Your jaw is practically on the floor. It's incredibly revealing, borderline indecent. You can clearly see the outline and hardness of her nipples straining against the thin material.</p>
<p class="narrative-text" style="margin-top:15px;">
Before you can even stammer out a response, she sighs dramatically. "Ugh, this top is actually really uncomfortable." And with startling casualness, right there in front of you, she reaches behind her neck, unties the string, and simply lets the tiny blue top fall away, tossing it onto the bed. She stands there completely topless for a beat, stretching slightly, then gives one of her breasts a thoughtful little squeeze and adjustment, as if checking something, all while seemingly ignoring your stunned presence.
</p>
<p class="player-reaction">You can't breathe. You stare, transfixed, at her full, bare breasts, the dark aureoles, the hard nipples pointing almost accusingly at you.</p>
<div class="menu-buttons">
<<link "(Remain frozen, unable to speak)">>
<<set $auntCarol.corruption += 5>> /* Corrupção aumenta com a nudez */
<<set _wardrobeStage = 4>>
<<replace "#stage-3">><<include "WardrobeHelpScene">><</replace>>
<</link>>
<<link "(Manage to look away, blushing furiously)">>
<<set _wardrobeStage = 4>>
<<replace "#stage-3">><<include "WardrobeHelpScene">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 4: VESTINDO A CALÇA JEANS ===== -->
<<if _wardrobeStage === 4>>
<div class="changing-scene-stage" id="stage-4">
<p class="narrative-text">
She finally seems to notice your reaction, or perhaps just decides she's done teasing for now. She picks up a pair of jeans from the bed, keeping her back to you. She quickly slips off the tiny blue bikini bottoms, tossing them aside, and steps into a fresh pair of simple panties (or maybe none? it's hard to tell from this angle). Then, still topless, she begins the mesmerizing process of shimmying into the tight jeans.
</p>
<div class="changing-video-container">
<video controls autoplay loop muted playsinline>
<source src="img/chars/carol/change_clothes/alexapearl_changing_jeans.webm" type="video/webm">
<!-- Adicione MP4 se tiver -->
Your browser doesn't support embedded videos.
</video>
</div>
<p class="player-reaction">Watching her work the denim up over her bare hips and backside is almost as provocative as the bikinis were. The way the fabric molds to her curves...</p>
<div class="dialog-container" style="margin-top: 15px;">
<div class="dialog-image">
<!-- Sem imagem de rosto aqui, ela está de costas -->
<img src="img/layout/bedroom_carol/bedroom_wardrobe_back_view.jpg" alt="Carol's back view"> <!-- Placeholder -->
</div>
<div class="dialog-text carol">
(Her voice cheerful, still facing away as she buttons the jeans) Phew, that's better! Jeans always feel more practical. You still here, sweetie? You've been a great help with the bikinis, gave me lots to think about! Thanks again! Think I'm done playing dress-up for now.
</div>
</div>
<p class="narrative-text">
She doesn't turn around, effectively dismissing you while finishing getting dressed. It feels like a whirlwind just happened.
</p>
<div class="menu-buttons">
<!-- Conclusão Final da Cena -->
<<link "Take the hint and leave the room...">>
<<set $scenes["WardrobeHelp"].status to 1>> /* Marca a cena inteira como concluída */
<<set $auntCarol.love += 10>> /* Recompensa base da cena */
<<set $auntCarol.lust += 20>> /* Recompensa de Lust alta devido à nudez/tease */
<<set $auntCarol.corruption += 10>> /* Corrupção base + bônus já aplicado */
/* Tempo: talvez esta cena leve mais tempo? +1? */
<<if !_sceneTimeAdvanced>> /* Evita adicionar tempo múltiplas vezes */
<<set $time += 1>>
<<set _sceneTimeAdvanced = true>>
<</if>>
<<goto "BedroomCarol">> /* Retorna para a visão base do Quarto */
<</link>>
</div>
</div>
<</if>>
</div>
<<unset _wardrobeStage>> /* Limpa a variável de estágio ao sair da passagem */
<<unset _sceneTimeAdvanced>> /* Limpa o controle de tempo */<div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
My temporary room... Not much, but it's comfortable enough.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bedroom/bedroom_messy_small.png" alt="Guest Bedroom">
</div>
<!-- Texto do ambiente modificado para remover menção ao computador -->
<p class="environment-text">A cozy guest room with a neatly made bed, a small desk, and a window letting in the morning light. Seems like a good place to rest or just pass some time.</p>
</div>
<<if State.hasPlayed("Bedroom")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "Bedroom" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>> <p>There are no missions available for now.</p> <</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "Bedroom" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>> <p>There are no scenes available for now.</p> <</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<if $player.interactions and Object.keys($player.interactions).length > 0>>
<<for _type, _interaction range $player.interactions>>
<<if _interaction.limit > ($player.dailyInteractions[_type] or 0)>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>> <p>There are no interactions available for now.</p> <</if>>
<<else>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>It's my room for now. I should get comfortable.</p>
<<set State.track("Bedroom")>>
<</if>>
<div class="exclusive-actions">
<h3>Exclusive Actions</h3>
<div class="actions-container">
<!-- Botão Sleep com condição de tempo -->
<<if $time >= 21 || $time < 6 >> <!-- Permite dormir a partir das 21h até antes das 6h -->
<<link "Sleep" "SleepSequence">><span class="action-button">Rest for the night</span><</link>>
<<else>>
<span class="action-button disabled" title="It's too early to go to bed. Wait until at least 9 PM (21:00).">Rest for the night (Too Early)</span>
<</if>>
<!-- Link "Use Computer" comentado/removido -->
<!-- <<link "Use Computer" "Computer">><span class="action-button">Check the internet...</span><</link>> -->
<span class="action-button" style="opacity:0.5; cursor:not-allowed; background-color: #46505A;" title="The old laptop isn't here right now.">Use Computer (Unavailable)</span>
<<link "Wait" `passage()`>>
<<set $time += 1>>
<<if $time >= 24>>
<<set $time = $time - 24>>
/* A lógica de avançar o dia é melhor na SleepSequence */
<</if>>
/* <<script>> */ /* Não precisa de JS para refresh simples de passagem */
/* updateSidebar(); */
/* <</script>> */
<span class="action-button">Pass some time (Time: <<print $time>>:00)</span>
<</link>>
</div>
<!-- Mensagem se for muito cedo para dormir -->
<<if $time < 21 && $time >= 6>>
<p style="text-align:center; color:#F1C40F; margin-top:15px; font-style:italic;">It's still too early to go to bed. Maybe explore a bit more or wait?</p>
<</if>>
</div>
<div class="menu-buttons">
[[Leave the room->CarolHouse]]
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bedroom/bedroom_night.jpg" alt="Guest Bedroom at Night">
</div>
<p class="narrative-text">
Deciding to call it a night, you change into something comfortable and slip under the covers. The bed is soft, and exhaustion quickly claims you. The sounds of the house fade away as you drift off...
</p>
</div>
<<silently>>
<<set _dreamText to "">>
<<set _dreamLustBonus to 0>>
<<set _hasDream to false>>
<<set _dreamHTML to "">>
<<set _nextDayHTML to "">>
<<if not $keyEvents.openWorldCarolCity>>
<<set _currentDay to $actualDay>>
<<if _currentDay is "Friday">>
<<set _dreamText to "You dream of Aunt Carol... but younger somehow, vibrant. She's in the living room, wearing a short skirt, dancing playfully just for you, a flirtatious smile on her lips. It feels innocent, yet charged with potential...">>
<<set _dreamLustBonus to 5>>
<<set _dreamHTML to '<img class="dream-media" src="img/chars/carol/dreams/alexapearl_dance_flirt.gif" alt="Dream Sequence - Dance Flirt">'>>
<<set _hasDream to true>>
<<set $actualDay to "Saturday">>
<<set $time to 7>>
<<set $player.energy to 100>>
<<set $auntCarol.dailyInteractions to { talk: 0, flirt: 0 } >>
<<set $neighborAngela.dailyInteractions to { talk: 0, compliment: 0 } >>
<<set $storeSkylar.dailyInteractions to { talk: 0, flirt: 0 } >>
<<set _nextDayHTML to '<p class="wake-up-text">You wake up feeling refreshed, the morning sun filtering through the window. It\'s ' + $actualDay + ', 7:00 AM.</p><div class="menu-buttons" style="margin-top: 20px;">[[Start the new day->Bedroom]]</div>'>>
<<elseif _currentDay is "Saturday">>
<<set _dreamText to "The dream shifts. You're lying down, looking up at Aunt Carol. She's leaning over you, her breasts full and bare, swaying gently. Her voice is a husky whisper, instructing you, guiding you... a torrent of pleasure builds until you finally release with a jolt. You wake up slightly sticky...">>
<<set _dreamLustBonus to 15>>
<<set _dreamHTML to '<video class="dream-media" controls autoplay loop muted playsinline><source src="img/chars/carol/dreams/alexapearl_joi.webm" type="video/webm">Your browser doesn\'t support embedded videos.</video>'>>
<<set _hasDream to true>>
<<set $actualDay to "Sunday">>
<<set $time to 7>>
<<set $player.energy to 100>>
<<set $auntCarol.dailyInteractions to { talk: 0, flirt: 0 } >>
<<set $neighborAngela.dailyInteractions to { talk: 0, compliment: 0 } >>
<<set $storeSkylar.dailyInteractions to { talk: 0, flirt: 0 } >>
<<set _nextDayHTML to '<div class="menu-buttons" style="margin-top: 20px;">[[You stir in your sleep...->MorningSurpriseTitsjob]]</div>'>>
<<elseif _currentDay is "Sunday">>
<<set _dreamText to "It's a strange, unsettling dream. Aunt Carol is lounging outdoors, wearing lingerie, but her belly is impossibly round and swollen, pregnant. She strokes her stomach proudly, her gaze heavy and possessive as she looks at you. It's bizarre, maternal, yet deeply erotic in a way that disturbs you...">>
<<set _dreamLustBonus to 10>>
<<set _dreamHTML to '<video class="dream-media" controls autoplay loop muted playsinline><source src="img/chars/carol/dreams/alexapearl_pregnant.mp4" type="video/webm">Your browser doesn\'t support embedded videos.</video>'>>
<<set _hasDream to true>>
<<set $actualDay to "Monday">>
<<set $time to 8>>
<<set $player.energy to 100>>
<<set $auntCarol.dailyInteractions to { talk: 0, flirt: 0 } >>
<<set $neighborAngela.dailyInteractions to { talk: 0, compliment: 0 } >>
<<set $storeSkylar.dailyInteractions to { talk: 0, flirt: 0 } >>
<<set _nextDayHTML to '<div class="menu-buttons" style="margin-top: 20px;">[[You begin to wake up on a new day...->CarolExplainsCityLife]]</div>'>>
<</if>>
<<set $dayNumber += 1>>
<<else>>
<<set _dreamText to "Your mind drifts through a collage of the day's events, faces and places blurring into a deep, restorative sleep.">>
<<set _hasDream to false>>
<<set $dayNumber += 1>>
<<set _daysOfWeek to ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]>>
<<set _currentDayIndex to _daysOfWeek.indexOf($actualDay)>>
<<set _nextDayIndex to (_currentDayIndex + 1) % 7>>
<<set $actualDay to _daysOfWeek[_nextDayIndex]>>
<<set $time to 7>>
<<set $player.energy to 100>>
<<for _activity, _details range $dailyActivities>>
<<set _details.count to 0>>
<</for>>
<<for _girlName, _girlData range $openWorldGirls>>
<<if _girlData.dailyInteractions>>
<<for _interactionName, _count range _girlData.dailyInteractions>>
<<set _girlData.dailyInteractions[_interactionName] to 0>>
<</for>>
<</if>>
<</for>>
<<set _nextDayHTML to '<p class="wake-up-text">You wake up feeling refreshed, the morning sun filtering through the window. It\'s ' + $actualDay + ', 7:00 AM.</p><div class="menu-buttons" style="margin-top: 20px;">[[Start the new day->Bedroom]]</div>'>>
<</if>>
<</silently>>
<div class="dream-container">
<<if _hasDream>>
<p class="dream-intro-text">...and fall into a restless sleep...</p>
<div class="dream-media-container">
<<= _dreamHTML >>
</div>
<p class="dream-description-text"><<= _dreamText >></p>
<<if _dreamLustBonus > 0>>
<<set $player.lust += _dreamLustBonus >>
<</if>>
<<else>>
<p class="dream-description-text" style="text-align: center; margin-top: 15px;"><<= _dreamText >></p>
<</if>>
</div>
<<= _nextDayHTML>>
</div>
<<unset _currentDay, _dreamText, _dreamLustBonus, _hasDream, _dreamHTML, _nextDayHTML, _daysOfWeek, _currentDayIndex, _nextDayIndex>><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Just checking the bathroom... Need to make sure I don't barge in on anyone.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bathroom/bathroom.jpg" alt="Bathroom">
</div>
<p class="environment-text">The bathroom is clean and smells faintly of soap and maybe Aunt Carol's perfume. A damp towel hangs over the shower rail.</p>
</div>
<<if ($auntCarol.locationSchedule.Bathroom.start <= $auntCarol.locationSchedule.Bathroom.end and $time >= $auntCarol.locationSchedule.Bathroom.start and $time <= $auntCarol.locationSchedule.Bathroom.end)
or ($auntCarol.locationSchedule.Bathroom.start > $auntCarol.locationSchedule.Bathroom.end and ($time >= $auntCarol.locationSchedule.Bathroom.start or $time <= $auntCarol.locationSchedule.Bathroom.end))>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_surprised.jpg" alt="Aunt Carol Surprised Face"> /* Sugestão */
</div>
<div class="dialog-text carol">
Oh! Hey! Didn't hear you come in. Just finishing up in here. Need something?
</div>
</div>
<<endif>>
<<if State.hasPlayed("Bathroom")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "Bathroom" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "Bathroom" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available for now.</p>
<</if>>
</div>
<div class="interaction-list">
<h3>Available Interactions</h3>
<<set _interactionCount to 0>>
<<for _type, _interaction range $auntCarol.interactions>>
<<if ($auntCarol.locationSchedule.Bathroom.start <= $auntCarol.locationSchedule.Bathroom.end and $time >= $auntCarol.locationSchedule.Bathroom.start and $time <= $auntCarol.locationSchedule.Bathroom.end)
or ($auntCarol.locationSchedule.Bathroom.start > $auntCarol.locationSchedule.Bathroom.end and ($time >= $auntCarol.locationSchedule.Bathroom.start or $time <= $auntCarol.locationSchedule.Bathroom.end))>>
<<if _interaction.limit > $auntCarol.dailyInteractions[_type]>>
<<if _interactionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _capitalized = _type.charAt(0).toUpperCase() + _type.slice(1)>>
<<link _capitalized _interaction.passage>>
<span class="interaction_name"><<print _capitalized>></span>
<</link>>
<<set _interactionCount += 1>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _interactionCount is 0>>
<p>There are no interactions available for now.</p>
<</if>>
</div>
<<else>>
<p>Just the bathroom. Seems unoccupied for now.</p>
<<set State.track("Bathroom")>>
<</if>>
<div class="menu-buttons">
[[Leave Bathroom->CarolHouse]]
</div>
</div><<set $randomNumber to Math.floor(Math.random() * 3) + 1>> /* 4 vídeos de talk */
<<silently>>
/* Atualiza interações e stats da Skylar */
<<set $storeSkylar.dailyInteractions.talk to ($storeSkylar.dailyInteractions.talk || 0) + 1>>
<<set $storeSkylar.love to ($storeSkylar.love || 0) + ($storeSkylar.interactions.talk.stats.love || 3)>> /* Usando fallback se stats não definido */
<<set $storeSkylar.corruption to ($storeSkylar.corruption || 0) + ($storeSkylar.interactions.talk.stats.corruption || 0)>> /* Skylar pode não ter lust/corruption em talk */
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
skylar: "Busy day today... people buying the weirdest combinations sometimes. Makes you wonder.",
player: "Yeah? Like what?"
},
{
skylar: "Did you find everything okay? Let me know if you need help reaching anything, some shelves are a bit high.",
player: "Thanks, Skylar. I think I'm good for now."
},
{
skylar: "Heard you're staying with Carol for the weekend. She's... quite the character, isn't she?",
player: "She's great! Always fun to visit."
},
{
skylar: "Just finished restocking the snacks section. Anything catch your eye?",
player: "Maybe later, just looking around for now."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
<<= _randomDialogue.skylar >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/skylar/talk/skylar_talk_" + $randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Skylar continues working while chatting, occasionally glancing your way.
</p>
</div>
<br>
<div class="menu-buttons">
[[Leave Interaction->LocalStore]] /* Volta para a visão geral da loja */
</div>
</div>
<<unset _randomDialogue, _videoPath>><<set $randomNumber to Math.floor(Math.random() * 5) + 1>> /* 5 vídeos de flirt */
<<silently>>
/* Atualiza interações e stats da Skylar */
<<set $storeSkylar.dailyInteractions.flirt to ($storeSkylar.dailyInteractions.flirt || 0) + 1>>
<<set $storeSkylar.love to ($storeSkylar.love || 0) + ($storeSkylar.interactions.flirt.stats.love || 2)>>
<<set $storeSkylar.corruption to ($storeSkylar.corruption || 0) + ($storeSkylar.interactions.flirt.stats.corruption || 1)>>
/* Adicionando Lust, assumindo que exista na definição, com fallback */
<<set $player.lust to ($player.lust || 0) + ($storeSkylar.interactions.flirt.stats.lust_player || 4)>> /* Flertar pode aumentar o lust do jogador também */
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
skylar: "Find everything you were... *looking* for? Sometimes the best things aren't on the shelves.",
player: "(Trying to act cool) Oh yeah? Like what, for instance?"
},
{
skylar: "You know, for someone just visiting, you seem to fit right in. Maybe you should stick around longer?",
player: "Maybe I should... depends on what there is to stick around *for*."
},
{
skylar: "It gets kinda boring here sometimes. A little distraction is always welcome... What kind of 'distractions' are you good at providing?",
player: "I can be pretty... distracting when I want to be."
},
{
skylar: "Those shorts Carol wears... they leave *nothing* to the imagination, huh? Wonder if she knows how much attention she gets.",
player: "She probably has an idea. Hard not to notice."
},
{
skylar: "So, besides helping your aunt, what else does a guy like you do for fun around here? The nights can get long...",
player: "I'm open to suggestions, especially from a local expert."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
<<= _randomDialogue.skylar >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/skylar/flirt/skylar_flirt_" + $randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Skylar leans against the counter, a playful or challenging look in her eyes.
</p>
</div>
<br>
<div class="menu-buttons">
[[Leave Interaction->LocalStore]]
</div>
</div>
<<unset _randomDialogue, _videoPath>><<set $randomNumber to Math.floor(Math.random() * 3) + 1>> /* 3 vídeos de talk */
<<silently>>
/* Atualiza interações e stats da Angela */
<<set $neighborAngela.dailyInteractions.talk to ($neighborAngela.dailyInteractions.talk || 0) + 1>>
<<set $neighborAngela.love to ($neighborAngela.love || 0) + ($neighborAngela.interactions.talk.stats.love || 5)>>
<<set $neighborAngela.corruption to ($neighborAngela.corruption || 0) + ($neighborAngela.interactions.talk.stats.corruption || 0)>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
angela: "Oh, hi again! Just taking a little break from the garden. It's beautiful weather, isn't it?",
player: "It really is perfect weather today."
},
{
angela: "How are things over at Carol's? Keeping you busy, I hope?",
player: "Yeah, she always finds something for me to do, but it's nice."
},
{
angela: "I saw the most beautiful butterfly in the garden earlier! Wish you could have seen it.",
player: "Sounds lovely! Maybe I'll spot it next time."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
<<= _randomDialogue.angela >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/neighbor/talk/angela_talk_" + $randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Angela smiles warmly, happy to chat for a moment.
</p>
</div>
<br>
<div class="menu-buttons">
[[Finish Talking->AngelaHouse]] /* Volta para a visão geral da casa da Angela */
</div>
</div>
<<unset _randomDialogue, _videoPath>><<set $randomNumber to Math.floor(Math.random() * 2) + 1>> /* 2 vídeos de compliment */
<<silently>>
/* Atualiza interações e stats da Angela */
<<set $neighborAngela.dailyInteractions.compliment to ($neighborAngela.dailyInteractions.compliment || 0) + 1>>
<<set $neighborAngela.love to ($neighborAngela.love || 0) + ($neighborAngela.interactions.compliment.stats.love || 4)>>
<<set $neighborAngela.corruption to ($neighborAngela.corruption || 0) + ($neighborAngela.interactions.compliment.stats.corruption || 1)>>
/* Elogiar pode aumentar o Lust dela (ou do jogador?) */
<<set $neighborAngela.lust to ($neighborAngela.lust || 0) + ($neighborAngela.interactions.compliment.stats.lust || 3)>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
playerCompliment: "You know, your garden looks absolutely amazing, Angela. You have a real talent.",
angelaResponse: "(Blushing slightly) Oh, thank you! That's so sweet of you to say. I do put a lot of work into it."
},
{
playerCompliment: "That's a really nice sundress you're wearing, it looks great on you.",
angelaResponse: "(Smiling, touches the fabric) Aw, thanks! I wasn't sure about it, but I'm glad you like it."
},
{
playerCompliment: "You always seem so cheerful, Angela. It's really nice being around you.",
angelaResponse: "(Beaming) That's one of the nicest things anyone's said to me today! Thank you."
}
]>>
<<set _randomCompliment to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomCompliment.playerCompliment >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
<<= _randomCompliment.angelaResponse >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/neighbor/compliment/angela_compliment_" + $randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Angela seems genuinely pleased by your kind words, her smile widening.
</p>
</div>
<br>
<div class="menu-buttons">
[[Finish Complimenting->AngelaHouse]]
</div>
</div>
<<unset _randomCompliment, _videoPath>><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bathroom/bathroom_messy.jpg" alt="Messy Bathroom">
</div>
<p class="narrative-text">
You step into the bathroom and immediately notice it could use a good cleaning. The mirror has water spots, there are soap residues on the sink, and the shower could definitely use some attention. Time to roll up your sleeves and get to work.
</p>
</div>
<!-- Interface de Limpeza -->
<div class="cleaning-interface">
<h3 class="cleaning-title">Bathroom Cleaning Tasks</h3>
<!-- Barra de Progresso -->
<div class="progress-container">
<div class="progress-bar">
<div id="progress-fill" class="progress-fill"></div>
</div>
<span id="progress-text" class="progress-text">0% Complete</span>
</div>
<!-- Botões de Tarefas -->
<div class="cleaning-tasks">
<div class="task-row">
<<link "🚽 Clean Toilet">>
<<run window.bathroomCleaning.completeTask('clean-toilet')>>
<</link>>
<<link "🚿 Clean Sink">>
<<run window.bathroomCleaning.completeTask('clean-sink')>>
<</link>>
</div>
<div class="task-row">
<<link "🛁 Clean Shower">>
<<run window.bathroomCleaning.completeTask('clean-shower')>>
<</link>>
<<link "🪟 Clean Mirror">>
<<run window.bathroomCleaning.completeTask('clean-mirror')>>
<</link>>
</div>
<div class="task-row">
<<link "🧹 Sweep Floor">>
<<run window.bathroomCleaning.completeTask('sweep-floor')>>
<</link>>
<<link "📦 Organize Items">>
<<run window.bathroomCleaning.completeTask('organize-items')>>
<</link>>
</div>
</div>
<!-- Feedback de Ação -->
<div id="cleaning-feedback" class="cleaning-feedback"></div>
</div>
<!-- Seção para completar a missão (Aparece quando 100%) -->
<div id="completion-section" class="completion-hidden" style="text-align: center; margin-top: 25px;">
<p class="narrative-text" style="margin-bottom: 15px;">
Perfect! The bathroom is now spotless and fresh. You wipe the sweat from your brow, feeling satisfied with your hard work. Aunt Carol will definitely appreciate this.
</p>
<<link "Finish Cleaning">>
<<replace "#completion-section">>
<p class="narrative-text" style="margin-bottom: 15px;">
You gather the cleaning supplies and take one last look at your handiwork. The bathroom sparkles like new. Time to let Aunt Carol know it's done.
</p>
<!-- Atualiza o estado do jogo -->
<<set $missions["008"].status to 1>>
<<set $player.energy to $player.energy - 10>>
<<set $auntCarol.love to $auntCarol.love + 10>>
<<set $auntCarol.lust to $auntCarol.lust + 5>>
<<set $player.money to $player.money + 10>>
<<set $time to $time + 1>>
<!-- Botão para sair -->
<div class="menu-buttons" style="margin-top: 15px;">
[[Return to the Hallway->CarolHouse]]
</div>
<</replace>>
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Living Room">
</div>
<p class="narrative-text">
After you finished cleaning the bathroom, you find Aunt Carol in the living room. She seems a bit flustered, holding a small, neatly wrapped package in her hands.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Blushing Face">
</div>
<div class="dialog-text carol">
Oh, sweetie, there you are! You're such a lifesaver. Listen, I have another tiny favor to ask, if you don't mind... I feel a bit silly asking after all you've done today.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
It's no problem at all, Aunt Carol. What do you need?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Blushing Face">
</div>
<div class="dialog-text carol">
Well, this is a little something for Angela, our neighbor. I was going to take it over myself, but I've just gotten a bit... sidetracked. Would you be an absolute angel and run it over to her house for me? It's nothing urgent, just whenever you're heading out or have a moment this afternoon.
</div>
</div>
<p class="narrative-text">
She hands you the small package. It's surprisingly light. You wonder what's inside, but her slightly flushed expression suggests it's best not to ask too many questions right now.
</p>
<!-- Conclusão da Missão - Aceitar levar o pacote -->
<div id="completion-section" style="text-align: center; margin-top: 25px;">
<p style="font-style: italic; color: #D4AF37; margin-bottom: 15px;">
You take the package. Now you need to deliver it to Angela's house.
</p>
<<link "Sure, I can do that for you.">>
<<set $missions["009"].status to 1>> /* Marca esta missão (o pedido) como concluída */
<<set $auntCarol.love += 5>> /* Recompensa de amor por aceitar */
<<run $player.inventory.pushUnique("AngelaPackage")>> /* Adiciona o item ao inventário do jogador */
/* O tempo não avança aqui, apenas o acordo foi feito e o item recebido */
<<goto "LivingRoom">> /* Retorna para a visão da sala de estar */
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/angela_house/house_flower.webp" alt="Angela's House with Flowers">
</div>
<p class="narrative-text">
You arrive at Angela's charming house, the package for her in hand. You ring the doorbell, and after a moment, Angela opens the door with a warm, welcoming smile.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Oh, hi there! What a pleasant surprise. What brings you over?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Hi Angela. Aunt Carol asked me to drop this off for you. She said you were expecting it?
</div>
</div>
<p class="narrative-text">
You hand her the small package. Angela's eyes light up, and she takes it with a grateful expression.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Oh, wonderful! Yes, I was. Thank you so much for bringing it over, that's so thoughtful of Carol... and of you for making the trip! Please, tell Carol I said thanks a million! Here, for your trouble...
</div>
</div>
<p class="narrative-text">
She presses a small amount of money into your hand with another bright smile. She seems genuinely happy to receive the package.
</p>
<!-- Conclusão da Missão - Pacote Entregue -->
<div id="completion-section" style="text-align: center; margin-top: 25px;">
<p style="font-style: italic; color: #D4AF37; margin-bottom: 15px;">
Package delivered successfully to Angela! She seemed very pleased.
</p>
<<link "Alright, I'll let Carol know. See you, Angela!">>
<<set $missions["010"].status to 1>>
<<set $neighborAngela.love += 10>>
<<set $player.money += 10>>
<<set $player.energy -= 2>> /* Pequeno custo pela caminhada/interação */
/* Tempo gasto na entrega */
/* Remover "AngelaPackage" do inventário do jogador */
<<run $player.inventory = $player.inventory.filter(item => item !== "AngelaPackage")>>
<<goto "AngelaHouse">> /* Retorna para a visão da casa da Angela (de onde pode sair) */
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Living Room">
</div>
<p class="narrative-text">
You find Aunt Carol back in the living room, perhaps reading a book or watching TV. She looks up expectantly as you approach.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Hey Aunt Carol, just wanted to let you know I dropped off that package with Angela. She seemed really happy to get it and said to thank you.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_smiling.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
Oh, wonderful! Thank you so much for doing that, sweetie. You're such a good help. Angela is a real dear, isn't she? Always so sweet.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Yeah, she was very nice. Her garden looks amazing too.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_smiling.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
It really does! She puts so much work into it. You know, she sometimes mentions needing an extra pair of hands for the heavier stuff. She usually asks some of the neighborhood boys to help out when they're around, but it's been a while since there's been anyone reliable... *Hint hint*. Just something to keep in mind if you're ever looking for a way to be neighborly... or earn a little extra.
</div>
</div>
<p class="narrative-text">
Aunt Carol gives you a knowing little smile. It seems she's already planting ideas for how you can spend your time... and perhaps get to know the neighbors better.
</p>
<!-- Conclusão da Missão -->
<div id="completion-section" style="text-align: center; margin-top: 25px;">
<p style="font-style: italic; color: #D4AF37; margin-bottom: 15px;">
Delivery confirmed! Aunt Carol seems pleased, and you've got a new lead on potential activities.
</p>
<<link "Good to know. Thanks, Aunt Carol!">>
<<set $missions["011"].status to 1>>
<<set $auntCarol.love += 10>>
<<set $time += 1>>
/* O tempo não precisa necessariamente avançar aqui, pois foi uma conversa rápida */
<<goto "LivingRoom">> /* Retorna para a visão da sala de estar */
<</link>>
</div>
</div><div class="game-container">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/kitchen/kitchen_night_dishes.jpg" alt="Kitchen at Night with Dirty Dishes">
</div>
<p class="narrative-text">
You enter the kitchen in the evening and find a pile of dirty dishes waiting in the sink. Plates, glasses, silverware, and a few pots are stacked up from the day's meals. Time to roll up your sleeves and get these clean.
</p>
</div>
<!-- Interface de Lavar Louça -->
<div class="dishwashing-interface">
<h3 class="dishwashing-title">Evening Dish Washing</h3>
<!-- Barra de Progresso -->
<div class="progress-container">
<div class="progress-bar">
<div id="dishes-progress-fill" class="progress-fill"></div>
</div>
<span id="dishes-progress-text" class="progress-text">0% Complete</span>
</div>
<!-- Status Atual -->
<div id="current-dish-status" class="current-status">
<p>Ready to start washing dishes!</p>
</div>
<div class="dishwashing-actions">
<div class="action-row">
<<link "🧽 Soap & Scrub">>
<<run setup.performDishAction('soap')>>
<</link>>
<<link "🚿 Rinse Clean">>
<<run setup.performDishAction('rinse')>>
<</link>>
<<link "🧻 Dry & Store">>
<<run setup.performDishAction('dry')>>
<</link>>
</div>
</div>
<!-- Contador de Louças -->
<div class="dish-counter">
<div class="counter-item">
<span class="dish-icon">🍽️</span>
<span id="plates-count">4 Plates</span>
</div>
<div class="counter-item">
<span class="dish-icon">🥛</span>
<span id="glasses-count">3 Glasses</span>
</div>
<div class="counter-item">
<span class="dish-icon">🍴</span>
<span id="silverware-count">3 Silverware</span>
</div>
<div class="counter-item">
<span class="dish-icon">🍳</span>
<span id="pots-count">2 Pots</span>
</div>
</div>
<!-- Feedback de Ação -->
<div id="dishwashing-feedback" class="dishwashing-feedback"></div>
</div>
<!-- Seção para completar a missão -->
<div id="completion-section" class="completion-hidden" style="text-align: center; margin-top: 25px;">
<p class="narrative-text" style="margin-bottom: 15px;">
Excellent work! All the dishes are now sparkling clean and properly stored away. The kitchen looks perfect, and you feel satisfied with a job well done. Aunt Carol will definitely appreciate coming home to a clean kitchen.
</p>
<<link "Finish Dish Washing">>
<<replace "#completion-section">>
<p class="narrative-text" style="margin-bottom: 15px;">
You dry your hands and take one final look at the spotless kitchen. Every dish has been washed, dried, and put away in its proper place. The satisfaction of completing this task feels great.
</p>
<!-- Atualiza o estado do jogo -->
<<set $missions["012"].status to 1>>
<<set $player.energy to $player.energy - 8>>
<<set $auntCarol.love to $auntCarol.love + 10>>
<<set $auntCarol.lust to $auntCarol.lust + 3>>
<<set $time to $time + 1>>
<!-- Botão para sair -->
<div class="menu-buttons" style="margin-top: 15px;">
[[Return to the Hallway->CarolHouse]]
</div>
<</replace>>
<</link>>
</div>
</div><div class="game-container spy-scene-container">
<!-- PARTE 1: APROXIMAÇÃO E ESPIONAGEM INICIAL -->
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bathroom/bathroom.jpg" alt="Bathroom Entrance">
</div>
<p class="spy-narrative">
Afternoon sunlight filters into the main bathroom area. You hear the distinct sound of running water coming from the shower stall, which has its own frosted glass door. Aunt Carol must be in there. A wave of curiosity washes over you...
</p>
</div>
<div class="player-thought-spy">
(Thinking) She's taking a shower... I probably shouldn't... but what if I just take a tiny peek? Just to see...
</div>
<p class="spy-narrative">
You quietly approach the frosted glass door of the shower area. It's steamy, but you can make out her silhouette moving within. You find a spot where the condensation is a little thinner...
</p>
<div class="spy-video-initial">
<video controls autoplay loop muted playsinline>
<source src="img/chars/carol/bath/alexapearl_bath_spying.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
Your heart pounds. Through the obscured view, you see her washing her hair, water cascading down her bare back and shoulders. She turns, rinsing, and you get flashes of wet skin, the curve of her hip, the swell of a breast as she moves. It's intoxicating. You linger, perhaps longer than you should, your gaze fixed.
</p>
<hr style="border-color: rgba(200, 180, 220, 0.2); margin: 25px 0;">
<!-- PARTE 2: O BARULHO E SER PEGO -->
<p class="spy-narrative">
You've definitely overstayed. Deciding you've pushed your luck, you try to back away. But in your haste, your elbow bumps a shelf, sending a bottle of shampoo clattering loudly to the tiled floor!
</p>
<p class="player-reaction" style="font-size: 1.5em; font-weight:bold; color: #E74C3C; text-align:center; margin: 10px 0 20px 0;">CRASH!</p>
<p class="spy-narrative">The sound of the shower abruptly stops. Silence. Then...</p>
<div class="dialog-container">
<div class="dialog-image">
<!-- Sem imagem de rosto aqui, é a voz dela do chuveiro -->
</div>
<div class="carol-dialog-spy"> <!-- Usando a classe customizada -->
Hello? Is someone out there?
</div>
</div>
<p class="spy-narrative">
Before you can react, the frosted door slides open. Aunt Carol peers out, water dripping, shielding her body with her hands. Her eyes widen when she sees you, shock quickly morphing into a complex mix of disappointment and something unreadable.
</p>
<div class="caught-video-container"> <!-- Container para o vídeo menor -->
<video controls autoplay loop muted playsinline> <!-- Loop pode ser removido se o vídeo tiver um fim natural para esta parte -->
<source src="img/chars/carol/bath/alexapearl_bath_catch_spying.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Blushing/Disappointed Face">
</div>
<div class="carol-dialog-spy">
Oh my god... You! What... I'm taking a shower!
</div>
</div>
<div class="player-thought-spy">
(Stammering) Aunt Carol, I... I'm so sorry! I just... I heard the water and I... I got curious... I didn't mean to...
</div>
<p class="spy-narrative">
She sighs, a deep, troubled sound. "Okay... fine," she says, her voice barely a whisper. "Just... just once. To satisfy your curiosity, I guess."
The video shows her hesitant reveal. "Then you get out."
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_blushing.jpg" alt="Carol Blushing/Stern Face">
</div>
<div class="carol-dialog-spy">
(More firmly) Okay. Get out of here now. Let me finish my shower in peace.
</div>
</div>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Stumble out of the bathroom, heart racing...">>
<<set $scenes["BathroomEspionage"].status to 1>>
<<set $auntCarol.lust += 25>>
<<set $auntCarol.corruption += 10>>
<<goto "Bathroom">>
<</link>>
</div>
</div>
<div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- INTRODUÇÃO COM O GIF DO VINHO -->
<div class="environment-container">
<div class="environment-image">
<img src="img/etc/foods/wine.gif" alt="Wine pouring into a glass" style="max-width: 300px; border-radius: 8px;">
</div>
<p class="spy-narrative" style="margin-top: 15px;">
You find Aunt Carol in the living room, a nearly empty bottle of red wine on the coffee table beside her. She's clearly had a few glasses already; there's a relaxed, almost giddy flush to her cheeks, and her eyes sparkle with a dangerously playful light when she sees you.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Tipsy Face">
</div>
<div class="dialog-text carol"> <!-- Usando a classe de diálogo padrão -->
Heeeey there, handsome! Just... unwinding a little. This wine is *delicious*. You should try some... or maybe... you're delicious enough on your own?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Okay, she's definitely feeling that wine. And she's looking right through me. This could get... interesting.
</div>
</div>
<p class="spy-narrative">
She giggles, taking another sip from her glass, then sets it down with a deliberate slowness. Her gaze drifts down her own body, then back to you, a provocative smirk playing on her lips.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Playful Face">
</div>
<div class="dialog-text carol">
Soooo... you saw me in the bathroom earlier, right? When I was... you know... *freshening up*. You got a pretty good eyeful. Don't even try to deny it, I saw you scrambling away like a startled bunny.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
My face burns. She *knew*? Or is she just fishing because of the noise?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Teasing Face">
</div>
<div class="dialog-text carol">
Don't look so horrified, sweetie. A little curiosity never hurt anyone... much. So, tell me... what did you think? Of my... *assets*? Are they nice? Big enough for your tastes?
</div>
</div>
<p class="spy-narrative">
As she speaks, she leans forward slightly, her top (whatever she's wearing) shifting, and she subtly, or not so subtly, jiggles her chest.
</p>
<!-- VÍDEO 1: BALANÇANDO COM ROUPA - TAMANHO AJUSTADO -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 480px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/tease/alexapearl_boucing_tits_w_tshirt.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The movement is hypnotic under the soft living room lights. Even through the fabric, their size and bounce are undeniably impressive. She watches your reaction, her eyes glinting.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Very Sly Face">
</div>
<div class="dialog-text carol">
But you know... fabric can be so... restrictive, don't you think? It hides all the best parts. Maybe you need a... clearer demonstration? For... scientific purposes, of course.
</div>
</div>
<p class="spy-narrative">
Before you can even process that, her hands go to her top. With a practiced, almost casual movement fueled by wine and audacity, she pulls it up and off, tossing it aside.
</p>
<!-- VÍDEO 2: BALANÇANDO SEM ROUPA - TAMANHO AJUSTADO -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 480px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/tease/alexapearl_boucing_tits_w_no_tshirt.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
And there they are. Full, round, and completely bare. She gives them another, more vigorous shake, her nipples hard and pointing right at you. A low chuckle rumbles in her chest. "See? Much better view, wouldn't you say? They *are* pretty magnificent, even if I do say so myself. Definitely a handful... or two."
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Holy... She's... just... Wow. I can't form words. My brain has officially short-circuited.
</div>
</div>
<p class="spy-narrative">
She holds your gaze for a long moment, letting you drink in the sight, the silence in the room thick with unspoken tension and the heavy scent of wine and her perfume.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "You manage a weak nod, completely flustered...">>
<<set $scenes["EveningWine"].status to 1>>
<<set $auntCarol.lust += 20>>
<<set $auntCarol.corruption += 15>>
<<set $auntCarol.love += 10>>
/* <<set $time += 1>> */
<<goto "LivingRoom">>
<</link>>
</div>
</div><div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- PARTE 1: O CONVITE INDECENTE -->
<div class="environment-container">
<p class="spy-narrative" style="margin-top: 15px;">
Later that night, after the evening's... *festivities*... you feel compelled to wish Aunt Carol a proper goodnight. You find her in her bedroom, already changed into a loose, silky nightgown that clings suggestively to her curves as she moves. The room is dimly lit, a single lamp casting long, inviting shadows. She turns as you enter, that sly, wine-fueled smile still playing on her lips.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Anticipating Face">
</div>
<div class="dialog-text carol">
Well, well, look who decided to pay a little night visit. Coming to tuck your old auntie in? Or perhaps... you had something else in mind after my little... *performance* earlier?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Nervously) I... uh... just wanted to say goodnight, Aunt Carol.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Demanding Face">
</div>
<div class="dialog-text carol">
Goodnight? Oh, I think we can do a little better than just "goodnight," don't you? After all the... *revelations* today, I think it's only fair you show me what *you've* been hiding under those pants of yours. Come on, don't be shy. Auntie Carol wants to see.
</div>
</div>
<p class="spy-narrative">
Your protests are weak, easily brushed aside by her intoxicating mix of playful demand and a predatory glint in her eyes. Before you know it, your pants are around your ankles, and your rapidly hardening erection is on full display under her hungry gaze.
</p>
<!-- VÍDEO 1: HANDJOB -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 520px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/handjob/alexapearl_handjob_no_cum.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
She doesn't hesitate. Her warm hand instantly closes around your shaft, her touch surprisingly firm and knowing. She begins to stroke you, slowly at first, then with increasing confidence, her eyes locked on yours, a triumphant smirk on her face.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Pleased Face">
</div>
<div class="dialog-text carol">
(Whispering huskily) Mmm, there we go... Much bigger than I imagined, sweetie. You've been holding out on your poor aunt. This will be our little secret, okay? If your mother or father ever found out about this... well, let's just say I'd be in a world of trouble. But some secrets are worth keeping, don't you think?
</div>
</div>
<p class="spy-narrative">
Her pace quickens, her thumb expertly teasing the head of your cock. You groan, close to the edge, but just as you think you're about to lose control, she abruptly stops, her hand still wrapped around you, pulsing gently.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Dismissive Face">
</div>
<div class="dialog-text carol">
(A light pat on your thigh) Alright, that's enough excitement for one night. Wouldn't want to tire you out completely on your first *real* night. Off to bed with you now, little nephew. Sweet dreams.
</div>
</div>
<p class="spy-narrative">
She releases you, leaving you aching and bewildered. Before you can say anything, she gently pushes you towards the door. As you step out, still trying to process what just happened, you hear the distinct *click* of her bedroom door locking behind you.
</p>
<hr style="border-color: rgba(200, 180, 220, 0.2); margin: 25px 0;">
<!-- PARTE 2: A ESPIADA PELA FECHADURA -->
<p class="spy-narrative">
Your mind is reeling. She locked the door? Curiosity, and a desperate need for some kind of... closure, perhaps, gets the better of you. You notice the old-fashioned keyhole on her door. Hesitantly, you lean down and peer through it.
</p>
<div class="changing-video-container" style="text-align: center;"> <!-- Mesmo container, talvez um pouco menor se o vídeo for mais focado -->
<video controls autoplay loop muted playsinline style="max-width: 400px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/solo/alexapearl_bed_w_masturbation.webm" type="video/webm">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The view is limited, but you see enough. Aunt Carol is back on her bed, her nightgown hiked up around her waist. Her eyes are closed, a look of intense concentration on her face as her hand moves rhythmically between her legs, a sleek vibrator clutched within. A soft moan escapes her lips. It seems your little... *interaction*... left her wanting more as well. You watch for a few more electrifying seconds before pulling away, your own arousal reignited, mixed with a potent cocktail of guilt and exhilaration.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(Thinking) Jesus Christ... She... What is even happening anymore? I need to get to my room.
</div>
</div>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Retreat to your room, utterly shell-shocked...">>
<<set $scenes["BedroomHandjob"].status to 1>>
<<set $auntCarol.lust += 30>>
<<set $auntCarol.corruption += 10>>
<<set $auntCarol.love += 15>>
<<set $player.lust += 15>> /* O jogador também fica no tesão, porra! */
<<goto "BedroomCarol">> /* Ou para o quarto do jogador, se fizer mais sentido */
<</link>>
</div>
</div><div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- PARTE 1: O DESPERTAR CONFUSO -->
<div class="environment-container">
<p class="spy-narrative" style="margin-top: 15px; font-size: 1.1em;">
Sunlight streams weakly into your room as you begin to stir. Grogginess clings to you, the events of last night a hazy, yet intensely vivid, series of flashes in your mind. You try to open your eyes, a strange warmth pressing against your lower body...
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Confused)">
</div>
<div class="dialog-text player">
(Groaning internally) Ugh... what time is it? What was that dream... or was it a dream? Something feels... heavy.
</div>
</div>
<p class="spy-narrative">
You crack your eyes open to see Aunt Carol already in your room, perched on the edge of your bed. She's dressed in a tight workout top and shorts, already looking energized. She's humming to herself, applying some kind of lotion to her arms and chest, seemingly oblivious to your stirring.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Energetic Face">
</div>
<div class="dialog-text carol">
Morning, sleepyhead! Rise and shine! Just getting ready for a quick workout, gotta keep this body in shape, you know? This new lotion smells amazing, makes the skin so... receptive.
</div>
</div>
<p class="spy-narrative">
Her words barely register. You're still trying to shake off the sleep, and that persistent, warm pressure... You blink, trying to focus, and as your vision clears, the world lurches.
</p>
<!-- VÍDEO PRINCIPAL: TITSJOB COM ROUPA E FINALIZAÇÃO -->
<div class="changing-video-container" style="text-align: center;"> <!-- Centraliza o vídeo -->
<video controls autoplay loop muted playsinline style="max-width: 540px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/titjob/alexapearl_titjob_w_clothes.webm" type="video/webm">
<!-- Adicione .mp4 se tiver -->
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
Somehow, while you were half-asleep, she had maneuvered your morning wood. It's now nestled snugly between her surprisingly ample breasts, still partially covered by her tight sports top. Her hands are cupping her own cleavage, pressing her flesh firmly around your shaft, and she's begun to move, a slow, rhythmic friction that sends jolts of pure, unadulterated pleasure straight to your groin. Her eyes are closed, a faint smile on her lips, as if lost in the sensation just as much as you are.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Shocked/Aroused)">
</div>
<div class="dialog-text player">
(Thinking) WHAT THE FU--?! How... When...?! This is... This is happening. Right now.
</div>
</div>
<p class="spy-narrative">
The sensation is overwhelming. The warmth of her skin, the soft pressure of her breasts, the subtle scent of lotion and her own musky arousal... it's too much. You gasp as the climax hits you like a freight train, a hot, thick release pulsing between her breasts, soaking the inside of her top.
She opens her eyes, looking down with a satisfied, almost predatory expression. Without a word, she pulls the fabric of her top away, revealing your sticky mess coating her cleavage. She studies it for a moment, then gives you a slow, deliberate wink.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Smirking Face">
</div>
<div class="dialog-text carol">
(Chuckles softly) Well, that's one way to start the day. Hope you enjoyed your... *protein shake*. Now, I really should get to that workout. Don't be late for breakfast, sweetie.
</div>
</div>
<p class="spy-narrative">
And just like that, as if nothing extraordinary just occurred, she slips off the bed, gives her top a cursory wipe, and saunters out of your room, leaving you breathless, sticky, and utterly bewildered by the force of nature that is your Aunt Carol.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Try to pick your jaw up off the floor...">>
<<set $scenes["MorningTitsjob"].status to 1>>
<<set $auntCarol.lust += 35>>
<<set $auntCarol.corruption += 15>>
<<set $auntCarol.love += 20>>
<<set $player.lust += 20>>
<<set $player.energy -= 5>> /* Orgasmos gastam uma energia do caralho, né? */
/* Avançar o tempo um pouco, já que "aconteceu" algo */
<<set $time += 1>>
<<if $time >= 24>> /* Caso vire o dia, mas improvável aqui */
<<set $time -= 24>>
/* Lógica de avançar o dia se necessário */
<</if>>
<<goto "Bedroom">> /* Retorna para o quarto do jogador */
<</link>>
</div>
</div>
<<set _bathStage to _bathStage || 0 >> /* Inicializa ou mantém o estágio da cena */
<div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- ===== ESTÁGIO 0: O CONVITE NO BANHEIRO ===== -->
<<if _bathStage === 0>>
<div class="changing-scene-stage" id="bath-stage-0">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bathroom/bathroom.jpg" alt="Bathroom Entrance">
</div>
<p class="spy-narrative">
You step into the bathroom, perhaps intending to use it yourself, when you find Aunt Carol already there, just by the entrance to the shower stall. She's wrapped in a plush towel, another one around her hair, but there's a knowing, almost challenging glint in her eyes as she sees you.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Inviting Face">
</div>
<div class="dialog-text carol">
Oh, hey there, sweetie. Perfect timing. I was just about to hop in for a quick shower to freshen up from this afternoon heat... Care to join me? The water's nice and warm, and there's plenty of room for two... or three, if you count your little friend.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Stunned)">
</div>
<div class="dialog-text player">
(Thinking) Join... join her? In the shower? Is this really happening?! My blood is already rushing south.
</div>
</div>
<p class="spy-narrative">
Before you can fully process the audacious invitation, she drops her towel with a wink, revealing her glorious naked form for a tantalizing second, and slips into the shower stall, partially closing the frosted glass door behind her.
</p>
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay muted playsinline style="max-width: 500px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/bath/alexapearl_bath_1.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">The video shows her beckoning you, then entering the shower. The "cut" implies you've decided to follow.</p>
<div class="menu-buttons" style="margin-top: 20px;">
<<link "Hesitantly step into the steamy shower stall..." >>
<<set _bathStage = 1>>
<<replace "#bath-stage-0">><<include "AfternoonSharedBath">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 1: APLICAÇÃO DE LOÇÃO - PARTE 1 ===== -->
<<if _bathStage === 1>>
<div class="changing-scene-stage" id="bath-stage-1">
<p class="spy-narrative">
The shower stall is filled with warm steam and the scent of her floral soap. Water cascades around you both. Carol turns, a bottle of what looks like body lotion or shower gel in her hand. She gives you a slow, deliberate smile.
</p>
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 520px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/bath/alexapearl_bath_2.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
She begins to apply the lotion to herself, her movements languid and overtly sensual. First her full breasts, massaging them in slow circles, her nipples hardening under her touch. Then down her legs, lingering on her inner thighs. She turns, presenting her magnificent, lotion-slicked ass to you, before working the cream suggestively close to, and then directly onto, her glistening folds. It's an incredibly intimate performance, clearly for your benefit.
</p>
<div class="menu-buttons">
<<link "Watch, completely mesmerized...">>
<<set _bathStage = 2>>
<<replace "#bath-stage-1">><<include "AfternoonSharedBath">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 2: APLICAÇÃO DE LOÇÃO - PARTE 2 (CLOSE-UP) ===== -->
<<if _bathStage === 2>>
<div class="changing-scene-stage" id="bath-stage-2">
<p class="spy-narrative">
She seems to sense your rapt attention, a satisfied hum escaping her lips. She moves closer, ensuring you get an even better view of her ministrations.
</p>
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 500px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/bath/alexapearl_bath_3.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The close-up is almost too much. Her hands lavish attention on her breasts again, then trail down to her pussy, her fingers circling and rubbing with an intensity that makes your own groin ache. She finishes with a few playful pats on her bum, letting the shower water begin to rinse the excess lotion away, her body gleaming.
</p>
<div class="menu-buttons">
<<link "Swallow hard, trying to remain standing...">>
<<set _bathStage = 3>>
<<replace "#bath-stage-2">><<include "AfternoonSharedBath">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 3: A DESPEDIDA CURTA ===== -->
<<if _bathStage === 3>>
<div class="changing-scene-stage" id="bath-stage-3">
<p class="spy-narrative">
With a final, lingering look that promises more, she reaches out and turns off the shower. The sudden silence is almost deafening.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Satisfied Face">
</div>
<div class="dialog-text carol">
Well, I hope you enjoyed our... *quick* shower together, sweetie. Did it help you cool off? Or maybe just heat you up more?
</div>
</div>
<p class="spy-narrative">
She chuckles, grabbing her towel and beginning to dry herself, seemingly unconcerned by your dazed state. The "show" is over, for now.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Mumble something incoherent and exit the bathroom...">>
<<set $scenes["SharedBathProvocation"].status to 1>>
<<set $auntCarol.lust += 25>>
<<set $auntCarol.corruption += 10>>
<<set $player.lust += 15>>
/* <<set $time += 1>> // Opcional: A "cena" inteira pode levar 1 hora */
<<goto "Bathroom">>
<</link>>
</div>
</div>
<</if>>
</div>
<<unset _bathStage>><<set _farewellStage to _farewellStage || 0 >> /* Inicializa ou mantém o estágio da cena */
<div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- ===== ESTÁGIO 0: A SURPRESA FINAL ===== -->
<<if _farewellStage === 0>>
<div class="changing-scene-stage" id="farewell-stage-0">
<div class="environment-container">
<div class="environment-image">
<!-- Imagem do quarto do jogador, malas quase prontas -->
<img src="img/layout/bedroom/bedroom_packing.jpeg" alt="Player's bedroom, packing bags">
</div>
<p class="spy-narrative">
Evening shadows lengthen in your temporary room. You're methodically folding clothes and placing them into your bag, a strange mix of melancholy and lingering arousal from the day's... *events*... swirling within you. It seems the weekend of provocations is finally drawing to a close. Just as you're zipping up a nearly full suitcase, you hear a soft knock and the door creaks open. It's Aunt Carol.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Determined Face">
</div>
<div class="dialog-text carol">
Almost done packing, sweetie? Thought I'd come see how my favorite nephew was doing before he... departs. But you know, there's one last piece of "luggage" I think you forgot to... *handle*. Why don't you take your friend out from down there and lie back on the bed for a moment? Auntie has a very special way of saying goodbye.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Shocked/Anticipating)">
</div>
<div class="dialog-text player">
(Thinking) My... friend? Oh god, she can't mean... After everything today, is she serious?! My heart is hammering against my ribs. There's no refusing that look in her eyes.
</div>
</div>
<p class="spy-narrative">
Wordlessly, your body moving almost on autopilot, fueled by a potent cocktail of shock, disbelief, and undeniable, throbbing anticipation, you do as she says. You unbuckle your pants, your already semi-aroused cock springing free, and lie back on the bed, entirely at her mercy.
</p>
<div class="menu-buttons" style="margin-top: 20px;">
<<link "Brace yourself for whatever comes next...">>
<<set _farewellStage = 1>>
<<replace "#farewell-stage-0">><<include "EveningFarewellBJ">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 1: BLOWJOB - PARTE 1 ===== -->
<<if _farewellStage === 1>>
<div class="changing-scene-stage" id="farewell-stage-1">
<p class="spy-narrative">
Aunt Carol approaches the bed, a predatory glint in her eyes. She kneels beside you, her gaze fixed on your erection. Without a word, she leans down...
</p>
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 460px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/blowjob/alexapearl_blowjob_end_scene_1.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
Her warm, wet mouth engulfs you. The sensation is electric. She starts slowly, teasingly, her tongue expertly darting and swirling, before her pace quickens, her head bobbing with increasing urgency. The video shows her dedicated work, slobbery and intense, before it abruptly cuts after a minute of pure, mind-numbing pleasure.
</p>
<div class="menu-buttons">
<<link "Gasp, trying to catch your breath...">>
<<set _farewellStage = 2>>
<<replace "#farewell-stage-1">><<include "EveningFarewellBJ">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 2: BLOWJOB - PARTE 2 (MÃOS E PEITOS) ===== -->
<<if _farewellStage === 2>>
<div class="changing-scene-stage" id="farewell-stage-2">
<p class="spy-narrative">
She pulls back for a moment, a string of saliva connecting her lips to your glistening cock. Her eyes are glazed with lust. Then, she dives back in, this time incorporating her hands, stroking your shaft in rhythm with her mouth.
</p>
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 460px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/blowjob/alexapearl_blowjob_end_scene_2.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The video continues, showing her masterful technique. She alternates between deep throating you and using her hands, occasionally guiding your throbbing cock up towards her breasts, pressing it between them briefly before her mouth reclaims its prize. The stimulation is relentless, pushing you closer and closer to the edge.
</p>
<div class="menu-buttons">
<<link "Arch your back, moaning uncontrollably...">>
<<set _farewellStage = 3>>
<<replace "#farewell-stage-2">><<include "EveningFarewellBJ">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 3: TITSJOB E FINALIZAÇÃO ===== -->
<<if _farewellStage === 3>>
<div class="changing-scene-stage" id="farewell-stage-3">
<p class="spy-narrative">
Just as you feel you can't take much more, she lifts her head, positioning your slick cock between her breasts, now nestled inside her short, presumably braless top.
</p>
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 460px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/blowjob/alexapearl_blowjob_end_scene_3.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
Her breasts press against you as she begins a rapid, vigorous titsjob. She spits onto her own cleavage to make it even slicker, her pace increasing to a frenzy. You explode, hot cum erupting over her chest and the fabric of her top. Even after you're spent, she continues for a few more powerful strokes, milking every last drop before finally slowing. She looks down at the mess, then up at you, a satisfied "Thank you" escaping her lips as the video ends.
</p>
<div class="dialog-container" style="margin-top: 20px;">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Victorious Face">
</div>
<div class="dialog-text carol">
(A throaty chuckle) Well now... Did you *really* think I'd let you leave without getting a proper taste of what you've been making me crave all weekend? That was... a lovely parting gift. For both of us.
</div>
</div>
<p class="spy-narrative">
She rises, adjusts her top with a satisfied sigh, and heads for the door, leaving you a panting, sticky mess on the bed.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Collapse onto the bed, completely drained...">>
<<set $scenes["FarewellBlowjob"].status to 1>>
<<set $auntCarol.lust += 40>>
<<set $auntCarol.corruption += 20>>
<<set $auntCarol.love += 25>>
<<set $player.lust += 30>>
<<set $player.energy -= 15>> /* Isso aqui gasta uma energia do cão! */
/* <<set $time += 1>> // Se quiser que consuma tempo */
<<goto "Bedroom">>
<</link>>
</div>
</div>
<</if>>
</div>
<<unset _farewellStage>><div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- PARTE 1: A OBSERVAÇÃO E O FLAGRA -->
<div class="environment-container">
<p class="spy-narrative" style="margin-top: 15px; font-size: 1.1em;">
It's a warm afternoon. You find yourself idly looking out a window (or perhaps you're in the front yard of Carol's house) when you spot Angela jogging down the street. She's in athletic wear that accentuates her fit physique, her ponytail bouncing with each stride.
</p>
</div>
<!-- GIF INICIAL DELA CORRENDO -->
<div class="changing-video-container" style="text-align: center;">
<img src="img/chars/neighbor/etc/angela_walking.gif" alt="Angela jogging down the street" style="max-width: 460px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
</div>
<p class="spy-narrative">
You can't help but watch her. There's an effortless grace to her movements. She seems focused on her run, unaware of your gaze... or so you think. As she passes by Carol's house, she glances over, her eyes meeting yours directly. She slows her pace, a slightly surprised but friendly smile appearing on her face, and waves, then gestures for you to come over.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Caught)">
</div>
<div class="dialog-text player">
(Thinking) Shit! She saw me. Okay, act natural... or as natural as someone caught staring can act.
</div>
</div>
<p class="spy-narrative">
You hesitantly step out or walk towards the edge of the property.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Friendly Face">
</div>
<div class="dialog-text angela">
Hey there! Enjoying the view? Just kidding! Taking a little break from my run. It's such a gorgeous day, isn't it? I was actually thinking of slowing down to a walk for a bit and maybe taking some pictures of the neighborhood flowers. You wouldn't mind joining me for a stroll, would you? And... this might be a weird ask, but could you maybe snap a few photos for me? My selfie skills are terrible!
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
(A bit flustered) Uh, hi Angela! Yeah, sure, a walk sounds nice. And photos? No problem, I can do that.
</div>
</div>
<hr style="border-color: rgba(200, 180, 220, 0.2); margin: 25px 0;">
<!-- PARTE 2: A CAMINHADA E AS FOTOS -->
<p class="spy-narrative">
She beams. "Great! Come on then!" You fall into step beside her as she transitions from a jog to a brisk walk. She points out various flowers and interesting spots in the neighborhood, chatting amiably. Then, she hands you her phone.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Posing/Smiling Face">
</div>
<div class="dialog-text angela">
Okay, how about here? Get a few of me with these roses? Just... make me look good, okay?
</div>
</div>
<!-- VÍDEO DA CAMINHADA E FOTOS -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 460px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/neighbor/etc/angela_walking_long.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The video shows you walking alongside her as she points things out, occasionally stopping to pose playfully or naturally while you "take her picture". She seems to enjoy the attention, her movements becoming a little more flirty, her poses a bit more suggestive as the walk continues. It's a surprisingly pleasant, if slightly charged, interaction.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Happy/Thankful Face">
</div>
<div class="dialog-text angela">
These are perfect! Thank you so much! You're a way better photographer than I am. Well, this was fun! I should probably finish up my cooldown. See you around!
</div>
</div>
<p class="spy-narrative">
She takes her phone back, gives you another bright smile, and with a little wave, continues on her way, leaving you with the lingering scent of her light perfume and the memory of her playful poses.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Head back towards Carol's house...">>
<<set $scenes["AngelaWalkingSpy"].status to 1>>
<<set $neighborAngela.lust += 10>>
<<set $player.corruption += 5>> /* Um pouco de corrupção por "tirar as fotos" */
<<set $neighborAngela.love += 5>> /* Ela gostou da companhia e da ajuda */
/* <<set $time += 1>> // Opcional: se a caminhada e fotos consumirem tempo */
<<goto "CarolHouse">> /* Ou para o local de onde o jogador saiu para encontrá-la */
<</link>>
</div>
</div>
<div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- PARTE 1: O AGRADECIMENTO... E O CONVITE -->
<div class="environment-container">
<p class="spy-narrative" style="margin-top: 15px; font-size: 1.1em;">
The sun is beginning to set, casting long shadows across Angela's now beautifully tended garden. You're both a little sweaty and tired from the afternoon's work, but there's a sense of accomplishment. Angela wipes a bead of sweat from her brow, then turns to you with a genuinely grateful smile.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Grateful/Pleased Face">
</div>
<div class="dialog-text angela">
I really can't thank you enough for all your help today! The garden looks amazing, and I definitely couldn't have done it all myself. You've really earned a... special thank you. Come inside for a moment, I want to show you something... or rather, *give* you something.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Curious/Tired)">
</div>
<div class="dialog-text player">
(Thinking) Special thank you? After all that digging and planting, I'm expecting a cold lemonade, not... well, with Angela, who knows anymore?
</div>
</div>
<p class="spy-narrative">
She leads you into her house, not towards the kitchen, but towards her bedroom. Your pulse quickens. She gestures for you to sit, or rather, lie down on her neatly made bed. Her earlier friendly demeanor now has an undercurrent of something more intense, more direct.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Determined/Seductive Face">
</div>
<div class="dialog-text angela">
Just relax for a minute, okay? You deserve it. Now... about that thank you...
</div>
</div>
<p class="spy-narrative">
Her eyes lock onto yours. With a slow, deliberate movement, she reaches for the hem of her slightly dirt-stained work shirt...
</p>
<!-- GIF DELA REMOVENDO A CAMISA -->
<div class="changing-video-container" style="text-align: center;">
<img src="img/chars/neighbor/tease/angela_show_tits.gif" alt="Angela removing her shirt, revealing her breasts" style="max-width: 480px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
</div>
<p class="spy-narrative">
...and pulls it over her head, tossing it aside. She stands before you, braless, her full, firm breasts now completely exposed, nipples already hardening in anticipation or the slight chill of the room. A mischievous smirk plays on her lips.
</p>
<hr style="border-color: rgba(200, 180, 220, 0.2); margin: 25px 0;">
<!-- PARTE 2: AS LUVAS E O HANDJOB -->
<p class="spy-narrative">
She then turns to her nightstand, retrieves a small package, and from it, pulls out a pair of sleek, black latex gloves.
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/etc/items/black_gloves.webp" alt="Black latex gloves" style="max-width: 300px; border-radius: 8px;">
</div>
</div>
<p class="spy-narrative">
Methodically, sensually, she pulls them on, smoothing the latex over each finger. The sight is unexpectedly erotic, clinical yet deeply suggestive.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela with Gloves, Commanding Face">
</div>
<div class="dialog-text angela">
Alright, big guy. You've been such a good helper. Now, drop your pants. It's time for Auntie Ang-- I mean, Angela... to take care of that tension you've been carrying around all day.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Aroused/Submissive)">
</div>
<div class="dialog-text player">
(Thinking) Latex gloves?! And she wants me to... Jesus. There's no way I'm saying no to this. Not now.
</div>
</div>
<p class="spy-narrative">
You comply, your erection already straining against your underwear. She approaches, sits on the edge of the bed facing you, her bare breasts almost brushing your chest. Her gloved hands reach for you...
</p>
<!-- VÍDEO DO HANDJOB -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 1080px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/neighbor/handjob/angela_handjob_cum.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The sensation of the smooth latex on your cock is electrifying. She starts with a firm, rapid stroke, her gaze intense. Her breasts sway with her movements, incredibly close. "You want this, don't you?" she murmurs, her voice husky. "You've been wanting to cum all day, working so hard..." Her pace quickens, the friction almost unbearable. In a remarkably short time, you explode, hot ropes of semen erupting over her gloved hands and onto her bare stomach. She doesn't stop immediately, continuing to milk you with a slower, deliberate rhythm for a few more moments, a satisfied, almost predatory smile on her face.
</p>
<div class="dialog-container" style="margin-top: 20px;">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Satisfied/Smirking Face">
</div>
<div class="dialog-text angela">
(Wiping her hands on a towel she conveniently had nearby) There we go. All better now? See? I told you I'd give you a special thank you. Now, you should probably get going before Carol wonders where you are.
</div>
</div>
<p class="spy-narrative">
She stands, retrieves her discarded shirt, and slips it back on as if nothing happened, though the satisfied glint in her eyes tells a different story.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Leave Angela's room, completely spent and dazed...">>
<<set $scenes["AngelaThanksHandjob"].status to 1>>
<<set $neighborAngela.lust += 25>>
<<set $neighborAngela.corruption += 10>>
<<set $neighborAngela.love += 15>>
<<set $player.lust += 20>>
<<set $player.energy -= 10>>
/* <<set $time += 1>> // Opcional */
<<goto "AngelaHouse">>
<</link>>
</div>
</div><div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- PARTE 1: A DESCOBERTA DA FRESTA -->
<div class="environment-container">
<p class="spy-narrative" style="margin-top: 15px; font-size: 1.1em;">
It's a relatively quiet afternoon at the Local Store. You're browsing the aisles, perhaps looking for a snack or just killing time after picking up Carol's package. As you pass by a door slightly ajar near the back – probably a stockroom or a small office – you hear faint rustling sounds from within.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Curious)">
</div>
<div class="dialog-text player">
(Thinking) Hmm, what's going on in there? Skylar's probably just organizing something... but that door isn't usually open like this. Maybe I can just... take a quick peek? No harm in that, right?
</div>
</div>
<p class="spy-narrative">
Your less noble instincts take over. You glance around to make sure no other customers are nearby, then cautiously approach the door, pressing your eye to the narrow gap. Your breath hitches.
</p>
<hr style="border-color: rgba(200, 180, 220, 0.2); margin: 25px 0;">
<!-- PARTE 2: A ESPIONAGEM -->
<p class="spy-narrative">
It's Skylar. The small room seems to be a makeshift break area or changing room. Her back is mostly to you, but you can see she's in the process of changing out of her work attire.
</p>
<!-- VÍDEO DA SKYLAR SE TROCANDO -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 480px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/skylar/spy/sweetie_remove_clothe.webm" type="video/webm">
<!-- Adicione .mp4 se tiver -->
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The video shows her casually peeling off her work shirt, revealing a simple bra underneath, then perhaps unbuttoning her pants or skirt. You get glimpses of her smooth skin, the curve of her waist, the swell of her breasts constrained by the bra. She seems completely at ease, unaware she's being watched, humming softly to herself as she changes. It's a surprisingly intimate, unguarded moment.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Aroused/Guilty)">
</div>
<div class="dialog-text player">
(Thinking) Okay, definitely shouldn't be seeing this. This is... private. But damn, she has a nice body... I need to get out of here before she turns around or someone else comes.
</div>
</div>
<p class="spy-narrative">
Your heart is thumping. You've seen more than you should have. Knowing Skylar's usually no-nonsense demeanor, getting caught would be disastrous, or at the very least, incredibly awkward. With one last lingering look, you carefully pull away from the door, hoping you didn't make any sound.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Slip away unnoticed (you hope)...">>
<<set $scenes["SkylarChangingRoomSpy"].status to 1>>
<<set $storeSkylar.lust += 15>> /* O "lust" aqui é mais uma representação do "potencial" ou da "atração" que o jogador sente/desperta, mesmo que ela não saiba */
<<set $player.corruption += 7>>
/* <<set $time += 0>> // Espiar rapidamente não precisa necessariamente gastar 1h */
<<goto "LocalStore">> /* Retorna para a visão base da Loja */
<</link>>
</div>
</div><<set _bjStage to _bjStage || 0 >> /* Inicializa ou mantém o estágio da cena */
<div class="game-container spy-scene-container"> <!-- Reutilizando a classe base para o container da cena -->
<!-- ===== ESTÁGIO 0: A EXPLOSÃO E A EXIGÊNCIA ===== -->
<<if _bjStage === 0>>
<div class="changing-scene-stage" id="bj-stage-0">
<div class="environment-container">
<p class="spy-narrative" style="margin-top: 15px; font-size: 1.1em;">
The Local Store is quiet again. After refusing yet another delivery request from Skylar, your frustration finally boils over. You've spent a good chunk of the afternoon helping her out, and this "one last thing" feels like a step too far.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Angry)">
</div>
<div class="dialog-text player">
You know what, Skylar? Enough! I've been running around for you all damn day! I thought maybe we could... I don't know, do something else, but all you do is treat me like some goddamn errand boy! You're going to pay for wasting my time. Now.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face (Surprised/Scared)">
</div>
<div class="dialog-text skylar">
(Stammering, eyes wide) P-Pay? What are you talking about? I... I was just busy...
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Demanding)">
</div>
<div class="dialog-text player">
No more excuses. Take your top off. And get on your knees. Now.
</div>
</div>
<p class="spy-narrative">
Skylar stares at you, a mixture of fear and something else... a flicker of reluctant curiosity? ...or perhaps just resignation. After a tense moment, she slowly, hesitantly, unbuttons her work shirt, letting it fall to the floor. Then, she unclasps her bra, her surprisingly full breasts spilling free. Her nipples are already hard. With a shaky breath, she sinks to her knees before you.
</p>
<!-- VÍDEO 1: INÍCIO DO BLOWJOB CONSENSUAL (APÓS OS PEITOS PARA FORA) -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 520px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/skylar/blowjob/sweetie_forced_bj_1.mp4" type="video/mp4">
<!-- Adicione .webm se tiver -->
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The video starts with her already topless, looking up at you with a mix of apprehension and dawning arousal. You guide your hardened cock towards her mouth. She takes you in, her lips surprisingly soft, and begins to work on you with a slow, almost hesitant rhythm, her eyes never leaving yours.
</p>
<div class="menu-buttons" style="margin-top: 20px;">
<<link "Let her continue at her own pace... for now...">>
<<set _bjStage = 1>>
<<replace "#bj-stage-0">><<include "SkylarStressForcedBJ">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 1: JOGADOR CONTROLA O RITMO ===== -->
<<if _bjStage === 1>>
<div class="changing-scene-stage" id="bj-stage-1">
<p class="spy-narrative">
Her initial hesitation seems to fade, replaced by a growing eagerness. But her pace is still too gentle for your liking. You've had enough of being patient.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Impatient/Dominant)">
</div>
<div class="dialog-text player">
(Gruffly) Faster, Skylar. And deeper.
</div>
</div>
<!-- VÍDEO 2: RITMO ACELERADO, BABA, GARGANTA -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 520px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/skylar/blowjob/sweetie_forced_bj_2.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
She whimpers slightly but obeys, her mouth working furiously on your shaft. The video captures the intensity: your hand now on the back of her head, controlling the pace, fucking her throat. Saliva dribbles from the corners of her lips, cascading down her chin and onto her bare breasts, glistening in the dim light of the stockroom. The wet, gagging sounds are almost as arousing as the sight.
</p>
<div class="menu-buttons">
<<link "Push her to her limits...">>
<<set _bjStage = 2>>
<<replace "#bj-stage-1">><<include "SkylarStressForcedBJ">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== ESTÁGIO 2: BLOWJOB INTENSO E CUMSHOT FACIAL ===== -->
<<if _bjStage === 2>>
<div class="changing-scene-stage" id="bj-stage-2">
<p class="spy-narrative">
You can feel your climax building rapidly. She's panting, tears welling in her eyes from the intensity, but she doesn't stop, her dedication almost desperate.
</p>
<!-- VÍDEO 3: BLOWJOB SENTADA/EM PÉ, CUM FACIAL -->
<div class="changing-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 520px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/skylar/blowjob/sweetie_forced_bj_3.mp4" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="spy-narrative">
The video shows the final, frantic moments. She's on you, then you might pull her up or change position. The build-up is palpable. Just as you're about to erupt, you pull out, aiming directly at her face. A thick, copious load sprays across her cheeks, her nose, her lips, even splattering her glasses. Her tongue darts out reflexively, catching some of the hot fluid as it drips. She looks up at you, covered in your cum, a dazed, almost worshipful expression in her eyes.
</p>
<div class="dialog-container" style="margin-top: 20px;">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Satisfied/Dominant)">
</div>
<div class="dialog-text player">
Learned your lesson, Skylar? Next time, think twice before trying to use me.
</div>
</div>
<p class="spy-narrative">
She can only nod, still breathless, a small, satisfied smile playing on her cum-smeared lips. You zip up your pants and walk out, leaving her to clean herself up, a newfound sense of power coursing through you. She definitely enjoyed that "payment" far more than she let on.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Leave the store with a smirk...">>
<<set $scenes["SkylarForcedBlowjob"].status to 1>>
<<set $storeSkylar.lust += 30>>
<<set $storeSkylar.love += -5 >> <!-- O "-10" do teu JSON original, mas talvez um -5 seja mais "ela gostou secretamente" -->
<<set $storeSkylar.corruption += 25>>
<<set $player.domination += 10>>
<<set $player.lust += 25>>
<<set $player.energy -= 10>>
/* <<set $time += 1>> */
<<goto "LocalStore">>
<</link>>
</div>
</div>
<</if>>
</div>
<<unset _bjStage>>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Find the TV Remote
</p>
<div class="environment-container">
<!-- Imagem da sala de estar, talvez um pouco desarrumada da noite anterior -->
<img src="img/layout/livingroom/livingroom_morning_clutter.jpeg" style="max-width: 520px; width: 100%;" alt="Living room in the morning, slightly cluttered">
<p class="mission-narrative-focus" style="margin-top:10px;">
It's Sunday morning. After the... *intense* start to your day, you head to the living room. You find Aunt Carol already there, dressed in an incredibly short pair of athletic shorts and a form-fitting top, paired with sheer black pantyhose that disappear high up her thighs. She's on her hands and knees, rummaging under the sofa, her magnificent ass pointing directly towards the doorway where you've just appeared.
</p>
</div>
<!-- VÍDEO DELA PROCURANDO E DEPOIS PROVOCANDO -->
<div class="mission-video-container" style="text-align: center;">
<video controls autoplay loop muted playsinline style="max-width: 520px; width: 100%; height: auto; border-radius: 8px; display: inline-block;">
<source src="img/chars/carol/tease/alexapearl_smile_tease.webm" type="video/webm">
<!-- Adicione .mp4 se tiver -->
Your browser doesn't support embedded videos.
</video>
</div>
<p class="mission-narrative-focus">
The video shows her initially focused on her search, her backside prominent and swaying slightly with her movements. Then, she seems to sense your presence, or perhaps just "accidentally" glances back. Her eyes widen for a fraction of a second before a slow, incredibly sly smirk spreads across her face. She doesn't straighten up. Instead, she starts to subtly, then more overtly, roll her hips and bounce her ass, making those short shorts ride up even further. It's a blatant, undeniable tease, all while pretending to still be "looking" for something.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Sly/Teasing Face">
</div>
<div class="dialog-text carol">
(Her voice slightly muffled from her position, but oozing amusement) Oh! Heeeey, sweetie! Didn't see you there! Just... uh... looking for that darn TV remote. It seems to have sprouted legs and run off. You haven't seen it, have you? Or... were you perhaps admiring the... *scenery* while I search?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Flustered/Aroused)">
</div>
<div class="dialog-text player">
(Stammering) I... uh... no, Aunt Carol. No remote. Just... came in to see if you needed anything.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Very Teasing Face">
</div>
<div class="dialog-text carol">
(Chuckles, giving her ass another exaggerated wiggle) Riiiight. "Needed anything." Well, maybe you *do* enjoy the view a little? It's okay, sweetie. No judgment here. A woman likes to know her... *efforts*... are appreciated. Anyway, this remote is a lost cause for now.
</div>
</div>
<p class="mission-narrative-focus">
She finally straightens up, stretching languidly, giving you an unimpeded view of her front in those ridiculously short shorts. The "mission" to find the remote seems to have been a complete, and very deliberate, distraction.
</p>
<div class="mission-interaction-point">
<p class="narrative-text" style="color: #D4AF37;">"Finding the remote" was clearly not the main objective here...</p>
<<link "Decide to 'give up' the search for now...">>
<<set $missions["013"].status to 1>>
<<set $auntCarol.love += 10>>
<<set $player.money += 5>> /* Talvez ela te dê um troco por "ajudar" */
<<set $auntCarol.lust += 15>> /* A provocação dela funcionou */
<<set $player.lust += 10>> /* E você definitivamente sentiu */
<<set $auntCarol.corruption += 5>>
<<set $time += 1>>
<<goto "LivingRoom">>
<</link>>
</div>
</div>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Change Bedroom Lightbulb
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bedroom_carol/bedroom_small.jpg" alt="Aunt Carol's Bedroom">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Later, around noon, Aunt Carol mentions that the main light in her bedroom burned out. "Could you be a dear and swap it for me, sweetie? The new bulbs are in the kitchen pantry, and there's a small stepladder in the hall closet if you need it. I'd do it, but I'm a little nervous with heights these days." You head to her bedroom to tackle the task.
</p>
</div>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="lightbulb-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Pack Your Bags
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/bedroom/bedroom_packing.jpeg" alt="Bedroom with Open Suitcase">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
It's Sunday evening, and your weekend with Aunt Carol is coming to an end. Time to pack your things and get ready to head back home. You lay your suitcase open on the bed and start gathering your belongings. Better make sure you don't forget anything important.
</p>
</div>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="packing-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Help Angela Plant Flowers
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/angela_house/house_flower.webp" alt="Angela's House Garden">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You arrive at Angela's house in the morning and find her in the backyard, kneeling by a section of her garden. She has various gardening tools and supplies laid out nearby. She looks up with a bright smile when she sees you approaching.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Oh, perfect timing! I was just about to start planting these new flower seeds. Would you mind giving me a hand? I could really use some help, and it's always more fun with company! Don't worry, I'll guide you through everything.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Of course, Angela! I'd be happy to help. I don't know much about gardening, but I'm willing to learn.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Wonderful! Don't worry, I'll walk you through each step. By the end of this, we'll have a beautiful flower garden, and you'll know the basics of planting. Let's get started!
</div>
</div>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="planting-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Water Angela's Plants
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/angela_house/house_flower.webp" alt="Angela's House Garden">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You return to Angela's garden the next morning and find her examining her newly planted flowers. She looks up with a warm smile when she sees you approach, holding a watering can in her hands.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Oh, perfect timing again! The plants we planted yesterday are looking good, but they need their daily watering. Would you mind helping me? But be careful - each type of plant needs different amounts of water. Too little and they'll be thirsty, too much and you might drown them!
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Sure, I'd be happy to help! I'll be careful with the watering. Just tell me what each plant needs.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/neighbor/face/angela_face.jpg" alt="Angela Face">
</div>
<div class="dialog-text angela">
Wonderful! I'll give you hints for each plant. Remember, different flowers have different needs - some like lots of water, others prefer just a gentle sprinkle. Listen carefully and you'll do great!
</div>
</div>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="watering-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Move Heavy Boxes for Skylar
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/store/store_inside_skylar.jpg" alt="Inside Local Store">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You enter the store and notice a note on the counter: "Back in 10 minutes - Please help move the boxes in the back to the storage room if you have time. Thanks! - Skylar". You look toward the back of the store and see several boxes scattered around that clearly need to be moved to the storage area.
</p>
</div>
<p class="narrative-text">
The boxes are of different sizes and types - some look light, others heavy, and a few appear fragile. You'll need to be strategic about how many you carry at once. Carry too many and you might drop them all!
</p>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="box-moving-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div>
<div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Organize Skylar's Stockroom
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/store/store_inside_skylar.jpg" alt="Store Stockroom">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You find Skylar in the back stockroom, surrounded by completely disorganized inventory. She's looking at her phone while pointing vaguely at the mess of items scattered around on shelves and tables.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Oh, there you are. Look, I need this stockroom organized and I'm way too busy with... important manager stuff. Just sort everything into the right categories - electronics, clothing, food, office supplies. Pretty basic, even you should be able to handle it.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Sure, I can help organize things. How do you want me to categorize everything?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
*rolls eyes* Seriously? Electronics with electronics, clothes with clothes... it's not complicated. Just use some common sense. I'll be doing actually important work while you handle this menial stuff. Try not to mess it up.
</div>
</div>
<p class="narrative-text">
Skylar goes back to her phone, clearly considering this conversation over. The stockroom is indeed a mess - items are scattered everywhere with no apparent organization system. Time to get to work while she... manages.
</p>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="stock-organizing-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Fix Skylar's Register
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/store/store_inside_skylar.jpg" alt="Local Store Interior">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You walk into the store and immediately hear Skylar's frustrated voice from behind the counter. She's aggressively pressing buttons on the cash register, which seems to be completely unresponsive.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Perfect. Just perfect. This stupid register is completely broken and I can't process any sales. Since you're here, you can fix it. I don't have time to deal with this technical nonsense.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Uh, I'm not really a tech expert, but I can take a look. What exactly is wrong with it?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
*sighs dramatically* Everything is wrong with it. It won't turn on properly, the screen is messed up, buttons don't work, and the printer is jammed. Just... figure it out. I'll be doing actual manager work while you handle this basic stuff.
</div>
</div>
<p class="narrative-text">
Skylar walks away dismissively, leaving you alone with the problematic register. You can see multiple issues that need to be addressed. Time to troubleshoot and fix each problem systematically.
</p>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="register-fixing-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Refuse Skylar's Unreasonable Delivery
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/store/store_inside_skylar.jpg" alt="Local Store Interior">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You enter the store to find Skylar behind the counter with a large package and what looks like a complicated delivery form. She looks up with her usual expression of mild annoyance, as if your mere presence is inconvenient.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Oh good, you're here. I need you to make a delivery for me. It's to some address way out in Riverside Heights - like, an hour and a half drive each way. The customer is expecting it today and I obviously can't leave the store.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Riverside Heights? That's really far away... and I don't even know that area. Plus, gas money for a three-hour round trip would be expensive.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
*rolls eyes* So? Use GPS like everyone else. And gas money? Really? It's called helping out. I've been giving you little jobs around here, so now you can actually do something useful for once. The address is on this paper.
</div>
</div>
<p class="narrative-text">
She slides a crumpled piece of paper across the counter with an address scrawled in barely legible handwriting. The package is large and looks heavy. You realize she's expecting you to drive hours out of your way, use your own gas money, and navigate to an unknown area - all without any compensation or even a "please."
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Look, Skylar, I've been happy to help around the store with organizing and fixing things, but this is different. That's a really long drive to a place I don't know, and you're not even offering to cover gas or anything.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Excuse me? Are you seriously telling me no right now? After everything I've let you do around here? This is part of helping out - you don't get to pick and choose what's convenient for you.
</div>
</div>
<!-- The moment of refusal -->
<div class="game-choice" style="margin-top: 20px; background: rgba(220, 53, 69, 0.1); border: 2px solid rgba(220, 53, 69, 0.3); border-radius: 8px; padding: 20px;">
<h3 style="color: #dc3545; text-align: center; margin-bottom: 15px;">Time to Stand Your Ground</h3>
<p style="color: #dadada; text-align: center; margin-bottom: 20px;">Skylar is clearly taking advantage of your willingness to help. This "delivery" would cost you hours of time and your own money, with no appreciation. How do you respond?</p>
<div class="answer-options" id="refusal-response">
<<button "I'm sorry, but I can't do this delivery. It's too far and unreasonable.">>
<<replace "#refusal-response">>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I'm sorry, but I can't do this delivery. It's too far, I don't know the area, and you're asking me to spend my own money on gas for your business. That's not reasonable.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Wow. Just... wow. I can't believe you're being this selfish right now. Fine. FINE. I guess I'll have to figure something else out since you can't be bothered to actually help when it matters.
</div>
</div>
<p class="narrative-text" style="color: #28a745; font-weight: bold; margin-top: 15px;">
You stand firm in your decision. While Skylar is clearly angry, you feel good about not letting yourself be taken advantage of. Some boundaries are important to maintain.
</p>
<<set $missions["021"].status to 1>>
<<set $storeSkylar.love to $storeSkylar.love - 5>>
<<set $player.confidence to ($player.confidence || 0) + 10>>
<div class="menu-buttons" style="margin-top: 20px; text-align: center;">
[[Leave the Store->LocalStore]]
</div>
<</replace>>
<</button>>
<<button "No way. You've been using me for free labor and now this? Absolutely not.">>
<<replace "#refusal-response">>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
No way. You've been having me do all this work around here for practically nothing, and now you want me to drive three hours and pay for my own gas? Absolutely not. Find someone else.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Are you kidding me right now?! I gave you opportunities to help out and gain experience, and THIS is how you repay me? You're being completely ungrateful and selfish. Don't expect any more favors from me.
</div>
</div>
<p class="narrative-text" style="color: #ffc107; font-weight: bold; margin-top: 15px;">
You call out her behavior directly. Skylar is furious, but you feel empowered standing up for yourself against someone who was clearly taking advantage of your good nature.
</p>
<<set $missions["021"].status to 1>>
<<set $storeSkylar.love to $storeSkylar.love - 8>>
<<set $player.confidence to ($player.confidence || 0) + 15>>
<div class="menu-buttons" style="margin-top: 20px; text-align: center;">
[[Leave the Store->LocalStore]]
</div>
<</replace>>
<</button>>
<<button "I'll think about it...">>
<<replace "#refusal-response">>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I... I'll think about it and let you know. That's a big ask and I need to consider it.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_face.jpg" alt="Skylar Face">
</div>
<div class="dialog-text skylar">
Think about it? There's nothing to think about! Either you help or you don't. I need an answer now, not later. You know what? Never mind. I can see where your priorities are.
</div>
</div>
<p class="narrative-text" style="color: #6c757d; margin-top: 15px;">
Your hesitation was essentially a refusal anyway. Skylar storms off, clearly frustrated. While you avoided direct confrontation, you still didn't let yourself be pushed into an unreasonable situation.
</p>
<<set $missions["021"].status to 1>>
<<set $storeSkylar.love to $storeSkylar.love - 3>>
<<set $player.confidence to ($player.confidence || 0) + 5>>
<div class="menu-buttons" style="margin-top: 20px; text-align: center;">
[[Leave the Store->LocalStore]]
</div>
<</replace>>
<</button>>
</div>
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Okay, I'm in the stockroom. It's a bit cramped and dusty back here.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/store_stock/stock.png" alt="Local Store Stockroom">
</div>
<p class="environment-text">The stockroom is filled with shelves packed high with boxes, supplies, and various unsold items. The air is a little musty.</p>
</div>
<!-- Skylar não está aqui por padrão, então não há diálogo de saudação dela -->
<!-- Se uma missão/cena específica trouxer Skylar aqui, o diálogo seria parte dessa missão/cena -->
<!-- O location-grid aqui será apenas para sair -->
<div class="location-grid">
<div class="location-item">
<div class="location-overlay">
[[Return to Main Store|LocalStore]]
</div>
<img src="img/layout/store/store_inside_small.jpg" alt="Exit to Main Store"> <!-- Imagem da loja principal -->
</div>
</div>
<<if State.hasPlayed("LocalStoreStock")>>
<div class="mission-list">
<h3>Available Missions</h3>
<<set _missionCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _mission range $missions>>
<<if _mission.location is "LocalStoreStock" and _mission.status is 0 and _mission.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _mission.period is "string">>
<<if _mission.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_mission.period)>>
<<if _mission.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _mission.period is 'undefined' or _mission.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _mission.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _mission.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_mission.requirements.id)>>
<<elseif _mission.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_mission.requirements.item)>>
<<elseif _mission.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _mission.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _missionCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<link _mission.name _mission.passage>>
<span class="mission_name"><<print _mission.name>></span>
<</link>>
<<set _missionCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _missionCount is 0>>
<p>There are no missions available here for now.</p>
<</if>>
</div>
<div class="scene-list">
<h3>Available Scenes</h3>
<<set _sceneCount to 0>>
<<silently>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<</silently>>
<<for _id, _scene range $scenes>>
<<if _scene.location is "LocalStoreStock" and _scene.status is 0 and _scene.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _scene.period is "string">>
<<if _scene.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<elseif Array.isArray(_scene.period)>>
<<if _scene.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif typeof _scene.period is 'undefined' or _scene.period is null>>
<<set _periodMatch to true>>
<</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<if _scene.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _scene.requirements.type is "mission">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "scene">> <<set _reqMet to State.hasPlayed(_scene.requirements.id)>>
<<elseif _scene.requirements.type is "item">> <<set _reqMet to $player.inventory.includes(_scene.requirements.item)>>
<<elseif _scene.requirements.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _scene.requirements>>
<<if _stat is not "type" and $player[_stat] < _value>> <<set _reqMet to false>> <</if>>
<</for>>
<<endif>>
<<if _reqMet>>
<<if _sceneCount < 3>> <<set _display to true>> <<else>> <<set _display to false>> <</if>>
<<if _display>>
<<set _sceneName to _id.charAt(0).toUpperCase() + _id.slice(1)>>
<<link _sceneName _scene.passage>>
<span class="scene_name"><<print _sceneName>></span>
<</link>>
<<set _sceneCount += 1>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if _sceneCount is 0>>
<p>There are no scenes available here for now.</p>
<</if>>
</div>
<!-- Interações com Skylar normalmente não ocorreriam aqui, a menos que seja parte de uma cena/missão específica -->
<!-- Se você quiser interações genéricas com Skylar *se* ela estiver no estoque por algum motivo, -->
<!-- você precisaria adicionar uma verificação de $storeSkylar.locationSchedule.LocalStoreStock -->
<!-- e copiar a lógica da interaction-list da passagem LocalStore, adaptando o location check. -->
<!-- Por agora, vou omitir para manter simples, já que você disse que não haveria fala dela aqui. -->
<div class="interaction-list">
<h3>Available Interactions</h3>
<p>No one to interact with back here right now.</p>
</div>
<<else>>
<p>The stockroom is quiet. You wonder if there's anything specific to do back here.</p>
<<set State.track("LocalStoreStock")>>
<</if>>
<!-- Menu de Saída da Passagem -->
<div class="menu-buttons">
[[Leave Stockroom->LocalStore]]
</div>
</div><div class="game-container event-container">
<h2 class="event-title">An Unexpected Call</h2>
<div class="environment-container">
<p class="event-narrative">
It's late Sunday evening. You've just finished packing your bags after a weekend that was... beyond anything you could have imagined. A sense of finality hangs in the air, mixed with the lingering scent of Aunt Carol and a confusing cocktail of arousal and regret. You're idly checking your phone, wondering why your Mom hasn't messaged about her arrival time, when it suddenly buzzes violently in your hand. It's her. Her name on the screen fills you with an unexpected wave of apprehension.
</p>
</div>
<div class="dialog-container event-dialog-player">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Concerned)">
</div>
<div class="dialog-text player">
(Answering) Mom? Hey! What's up? I was just wondering when you'd be here...
</div>
</div>
<p class="event-narrative">
Her voice on the other end is anything but calm. It's strained, cracking, on the verge of tears.
</p>
<div class="dialog-container event-dialog-mother">
<div class="dialog-image">
<img src="img/chars/mom/face/silhouette_face.png" alt="Mother's Silhouette Face">
</div>
<div class="dialog-text system"> <!-- Usando 'system' para a mãe no telefone -->
(Voice shaking) Oh, sweetie... thank god I reached you. Something... something terrible has happened at home. I... I don't even know how to tell you this...
</div>
</div>
<div class="dialog-container event-dialog-player">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Worried)">
</div>
<div class="dialog-text player">
Mom, what is it? What happened? Are you okay?!
</div>
</div>
<p class="event-narrative">
She takes a ragged breath and then the words tumble out in a rush of panic and despair. A major water pipe burst in the basement while no one was there for the weekend. The entire downstairs flooded. Furniture, electronics, precious memories... all ruined or severely damaged. But it gets worse.
</p>
<div class="event-image-container">
<img src="img/layout/player_house/flooded_house.webp" alt="Flooded and damaged house interior">
</div>
<div class="dialog-container event-dialog-mother">
<div class="dialog-image">
<img src="img/chars/mom/face/silhouette_face.png" alt="Mother's Silhouette Face (Distraught)">
</div>
<div class="dialog-text system">
The restoration company just came... they found black mold, sweetie. Toxic black mold, everywhere the water touched. The house... it's not safe. They said it's uninhabitable. We can't go back in there until it's all... remediated. It's going to take months, honey. Months. And I... I have to stay here, at a hotel near the house, to deal with the insurance, the contractors... I can't leave. I can't come get you.
</div>
</div>
<p class="event-narrative">
The words hit you like a physical blow. Your home, gone, at least for now. Stranded. Your mind races, trying to process the sheer scale of the disaster.
</p>
<div class="dialog-container event-dialog-player">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Shocked)">
</div>
<div class="dialog-text player">
Months? But... where am I supposed to go? What am I going to do?
</div>
</div>
<div class="dialog-container event-dialog-mother">
<div class="dialog-image">
<img src="img/chars/mom/face/silhouette_face.png" alt="Mother's Silhouette Face (Apologetic)">
</div>
<div class="dialog-text system">
I know, baby, I know. I'm so, so sorry this is happening. The only thing I can think of... you'll have to talk to Carol. See if... see if you can stay with her for a while longer. Just until we figure things out. It might be for a month, maybe more... Oh, this is all such a mess! Please, just talk to her. I'll call again as soon as I know more. I love you.
</div>
</div>
<p class="event-narrative">
The call ends, leaving an echoing silence in its wake. Your weekend with Aunt Carol has just been extended indefinitely. A strange, almost illicit thrill mixes with the genuine shock and concern for your home. More time with Aunt Carol... The possibilities, both terrifying and exhilarating, begin to bloom in your mind.
</p>
<div class="event-conclusion">
<<link "Numbly hang up and try to find Aunt Carol...">>
<<set $keyEvents.mainHouseProblemRevealed to true>>
<<set $events["MothersCall"].status to 1>> /* Marca este evento como ocorrido */
/* Não há mudança de stats do jogador ou Carol aqui, é puramente informativo/gatilho */
<<goto "TalkToCarolAboutStay">>
<</link>>
</div>
</div>
<div class="game-container event-container">
<h2 class="event-title">A Difficult Conversation</h2>
<div class="environment-container">
<p class="event-narrative">
Still reeling from your mother's call, you find Aunt Carol in the living room. She's tidying up a bit from the evening, perhaps humming softly, but she immediately notices your pale face and distressed expression. Her smile fades, replaced by genuine concern.
</p>
</div>
<div class="dialog-container event-dialog-mother"> <!-- Reutilizando para Carol aqui, ajustar CSS se quiser cor diferente para ela -->
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Concerned Face"> <!-- Use uma face preocupada dela -->
</div>
<div class="dialog-text carol"> <!-- Mudado para .carol para estilo correto -->
Sweetie? What's wrong? You look like you've seen a ghost. Did something happen with your mom's call? Is she okay?
</div>
</div>
<p class="event-narrative">
The words spill out of you – the flood, the damage, the toxic mold, your childhood home rendered uninhabitable for months. You explain how your mom is stuck there dealing with everything and that you... you have nowhere to go right now. The weight of it all makes your voice tremble.
</p>
<div class="dialog-container event-dialog-player">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Distraught)">
</div>
<div class="dialog-text player">
...and she said I should ask you if... if maybe I could... stay here a bit longer? I don't know what else to do, Aunt Carol. I'm so sorry to impose...
</div>
</div>
<p class="event-narrative">
Before you can even finish, or properly start to apologize for the burden, Carol steps forward, her expression softening into one of profound sympathy and something else... a warmth that goes beyond simple familial duty.
</p>
<div class="dialog-container event-dialog-mother">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Warm/Reassuring Face">
</div>
<div class="dialog-text carol">
(Voice gentle but firm) Oh, honey, don't you dare apologize! Of course, you can stay! For as long as you need. A month? Two? Indefinitely! This is your home for now too. We'll figure everything out. Your mom needs to focus on the house, and you need a safe, comfortable place to be. And I... well, I certainly won't mind the company.
</div>
</div>
<p class="event-narrative">
She pulls you into a surprisingly strong, comforting hug. It's not like the playful or teasing hugs from before; this one feels genuinely supportive, though you can't help but notice the softness of her body pressed against yours.
</p>
<div class="dialog-container event-dialog-mother">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Caring Face">
</div>
<div class="dialog-text carol">
There, there. It's going to be okay. You look exhausted, poor thing. Why don't you head off to bed? Get some rest. We can talk more in the morning. Don't you worry about a thing tonight.
</div>
</div>
<p class="event-narrative">
Her reassurance, despite the chaos of the news, does bring a sliver of comfort. The thought of an extended stay here, under her roof, with all its complicated undertones, is a dizzying prospect. But right now, all you feel is an overwhelming tiredness and a strange sense of inevitability.
</p>
<div class="event-conclusion">
<<link "Nod gratefully and head to your room...">>
<<set $keyEvents.carolAwareOfProblem to true>> /* Se você tiver esta flag */
<<set $keyEvents.extendedStayApproved to true>> /* Se você tiver esta flag */
<<set $events.CarolAgreesToStay.status to 1>> /* Marca este evento como ocorrido */
<<set $auntCarol.love += 15>>
<<set $auntCarol.caring += 5>> /* Aumenta o stat de 'caring' dela */
/* O jogador está indo dormir, então o próximo passo é a sequência de sono */
<<goto "SleepSequence">>
<</link>>
</div>
</div>
<div class="game-container event-container"> <!-- Reutilizando o estilo de evento -->
<h2 class="event-title">A New Chapter (and a New City)</h2>
<div class="environment-container">
<div class="environment-image">
<!-- Imagem da Carol em cima do jogador na cama -->
<img src="img/chars/carol/tease/alexa_underboob.jpg" alt="Carol leaning over player in bed">
</div>
<p class="event-narrative" style="margin-top:10px;">
You slowly open your eyes on Monday morning, the weight of the weekend's events and your uncertain future still heavy on your mind. But instead of your usual ceiling, the first thing you see is Aunt Carol leaning over you, already dressed in a short top, a playful smile on her face. She smells faintly of coffee and her usual perfume.
</p>
</div>
<div class="dialog-container event-dialog-mother"> <!-- Usando classe da mãe para Carol aqui, ou crie uma nova para ela -->
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
Gooood morning, sleepyhead! Or should I say, good morning, new housemate? Slept well after all the drama last night? I figured since you're going to be my... *guest*... for a while longer, it's probably a good idea for you to get to know the town a bit. Can't have you cooped up in here with just your old auntie all the time, as tempting as that might be for both of us.
</div>
</div>
<div class="dialog-container event-dialog-player">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face (Listening)">
</div>
<div class="dialog-text player">
(Still a bit dazed) Morning, Aunt Carol... Yeah, I guess you're right. I don't really know anything around here besides your place and the store.
</div>
</div>
<p class="event-narrative">
She chuckles, ruffling your hair before hopping off the bed. "Exactly! So, I made a little mental list for you. And here..." She hands you an older, but still functional, laptop. "My old one. Figured you might want some privacy for your... internet activities, or if you want to look for some small jobs to earn a bit of cash. Don't want you getting bored."
</p>
<div class="locations-list-container">
<p class="city-locations-intro">"So, about town," she begins, ticking points off on her fingers:</p>
<h4><span class="emoji">🏘️</span> Our Neighborhood:</h4>
<ul>
<li><span class="emoji">👩👧👦</span> You already know Angela, our lovely green-thumbed neighbor.</li>
<li><span class="emoji">💅</span> There are a couple of other ladies on the street... Brandi next door can be a bit of a snob, a real Karen sometimes, so maybe steer clear unless you enjoy drama. But the others are generally nice.</li>
</ul>
<h4><span class="emoji">🚶</span> Close By (Walking Distance):</h4>
<ul>
<li><span class="emoji">🌳</span> The Park is just a few blocks away, good for a walk or just relaxing.</li>
<li><span class="emoji">🏪</span> And of course, the Local Store with our dear Skylar. Always something happening there.</li>
</ul>
<h4><span class="emoji">🏙️</span> City Center (A bit of a walk, or you can take a bus):</h4>
<ul>
<li><span class="emoji">🏋️</span> There's a decent Gym if you want to... bulk up.</li>
<li><span class="emoji">🏢</span> Some Apartments, if you ever feel like looking for your own place... eventually.</li>
<li><span class="emoji">🍸</span> A couple of Bars, for when you're old enough... or look old enough.</li>
<li><span class="emoji">🛍️</span> The Mall, which has all sorts of little shops – clothes, electronics, a food court, the usual.</li>
</ul>
<h4><span class="emoji">⚠️</span> The Outskirts / Ghetto Area:</h4>
<ul>
<li><span class="emoji">🚫</span> Now, listen to me carefully. There's an area further out, towards the old industrial park... let's just call it the 'Ghetto' or the 'Outskirts'. <span class="ghetto-warning">I don't want you going there. Ever. It's not safe, especially for someone new in town. Just... stay away from there, okay? Promise me.</span> I'm not even going to tell you what's there because you don't need to know.</li>
</ul>
</div>
<div class="dialog-container event-dialog-mother">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_sly.jpg" alt="Carol Smiling Face">
</div>
<div class="dialog-text carol">
So, lots to explore! Your phone should get decent signal for maps and stuff. And with the laptop, you can look up bus schedules, maybe find some part-time work around town if you want some spending money. The world's your oyster, sweetie... or at least, this little corner of it is.
</div>
</div>
<p class="event-narrative">
The prospect of a whole new environment, new places, new people... and new opportunities with Aunt Carol now that your stay is indefinite... it's a lot to take in. But it's also undeniably exciting.
</p>
<div class="event-conclusion">
<<link "Okay, I think I got all that. Time to explore...">>
<<set $keyEvents.openWorldCarolCity to true>>
<<set $events.CityIntroductionByCarol.status to 1>>
<<set $auntCarol.love += 5>>
/* Adiciona o laptop ao inventário do jogador */
<<if !$player.inventory.includes("OldLaptop")>>
<<run $player.inventory.push("OldLaptop")>>
<</if>>
/* Redireciona para o quarto do jogador, onde ele pode agora usar o laptop/celular ou sair */
<<goto "Bedroom">>
/* <<goto "EndOfCurrentContent">> */
<</link>>
</div>
</div><div class="game-container end-content-container">
<div class="end-content-logo">
<!-- ATENÇÃO: O caminho local C:\Users\... não funcionará em um jogo web.
Você precisa colocar a logo na pasta 'img' do seu projeto e usar um caminho relativo.
Exemplo: img/utils/logo/CK.png -->
<img src="img/utils/logo/CK.png" alt="ChromaK Logo">
</div>
<h2 class="end-content-title">The Weekend Is Over... Or Is It?</h2>
<p class="end-content-text">
And so concludes the initial three days of "A Weekend With Aunt Carol" (Version 0.2/0.3)!
You've navigated charged moments, completed tasks, and perhaps... gotten much closer to your alluring Aunt than you ever anticipated.
</p>
<p class="end-content-text">
But as many of you have astutely noticed and passionately requested, <strong>this story is far from over!</strong> Thanks to the incredible feedback and the unexpected turn of events in our protagonist's life, his stay with Aunt Carol is about to be extended.
</p>
<p class="end-content-text">
What does this mean? <strong>More. Much more.</strong> We're planning to:
<ul>
<li><span class="emoji">🗺️</span> Expand the explorable map of Carol's city.</li>
<li><span class="emoji">💬</span> Introduce new characters with their own stories and... *desires*.</li>
<li><span class="emoji">💖</span> Deepen the interactions and relationship paths with Aunt Carol, Angela, and Skylar.</li>
<li><span class="emoji">🔥</span> Add many more steamy scenes, tantalizing missions, and unexpected twists.</li>
<li><span class="emoji">💻</span> Implement new gameplay mechanics like using the phone and laptop.</li>
</ul>
</p>
<p class="end-content-text">
The goal is to transform this weekend into a truly unforgettable (and likely very indecent) extended stay!
</p>
<div class="patreon-cta-container">
<h3 class="patreon-cta-title">Want to Shape the Future of "A Weekend With Aunt Carol"?</h3>
<p class="end-content-text" style="color: #e0e0e0; margin-bottom: 15px;">
Your support makes this continued development possible! By joining my Patreon, you not only help keep the lewd adventures coming but also get to:
</p>
<ul style="text-align: left; max-width: 450px; margin: 0 auto 20px auto;">
<li><span class="emoji">🗳️</span> Vote on future content, character development, and even new game mechanics.</li>
<li><span class="emoji">🤫</span> Get exclusive sneak peeks and behind-the-scenes updates.</li>
<li><span class="emoji">✨</span> Higher tiers get early access to new versions and other special perks!</li>
</ul>
<p class="end-content-text" style="color: #e0e0e0;">
Every bit of support, no matter the tier, helps immensely and allows me to dedicate more time to making this game everything we want it to be (and more!).
</p>
<a href="https://www.patreon.com/c/ChromaK" class="patreon-link" target="_blank">Support ChromaK on Patreon!</a>
</div>
<p class="end-content-final-message">
Thank you for playing, and get ready for a whole lot more heat! The next update is already in the works. <br>Stay tuned, and stay naughty!
</p>
<!-- Opcional: Botão para voltar ao menu principal ou fechar (se for o fim absoluto do build atual) -->
<div class="menu-buttons" style="margin-top: 30px;">
[[Return to Main Menu->Start]]
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">Outside Carol's House</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/house/house.jpg" alt="Front of Aunt Carol's House">
</div>
</div>
<p class="hub-description">
You stand in front of the house, the sun on your face. The neighborhood is quiet, almost deceptively so. From here, the entire city is yours to explore, each district holding its own promises and perils. Where will you go?
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[The Neighborhood|Neighborhood]]
</div>
<img src="img/layout/neighborhood/neighborhood_image_day.jpg" alt="The Neighborhood">
</div>
<div class="location-item">
<div class="location-overlay">
[[The Park|Park]]
</div>
<img src="img/layout/park/park_preview.jpg" alt="The Park">
</div>
<div class="location-item">
<div class="location-overlay">
[[The City Center|CityCenter]]
</div>
<img src="img/layout/city/city_center_preview.jpg" alt="The City Center">
</div>
<div class="location-item">
<div class="location-overlay" style="background-color: rgba(120, 20, 20, 0.6);"> <!-- Overlay vermelho de aviso -->
[[The Outskirts|Outskirts]]
</div>
<img src="img/layout/outskirts/outskirts_preview.jpg" alt="The Outskirts"> <!-- Imagem com vibe mais sombria -->
</div>
<div class="location-item">
<div class="location-overlay">
[[Go Back Inside|CarolHouse]]
</div>
<img src="img/layout/livingroom/livingroom_small.jpg" alt="Go Back Inside">
</div>
</div>
<!-- SEÇÃO DE EVENTOS PARA A ÁREA 'OUTSIDE' -->
<<silently>>
/* Este espaço está pronto para sua lógica de eventos que ocorrem na rua em frente à casa da Carol.
Você pode adaptar o código de eventos da CarolHouse para verificar _event.location is "Outside" */
<<set _availableEventsArrayOutside to []>>
/* Exemplo:
<<for _eventId, _event range $events>>
<<if _event.location is "Outside" and _event.status === 0 and etc...>>
<<run _availableEventsArrayOutside.push(_event)>>
<</if>>
<</for>>
*/
<</silently>>
<<if _availableEventsArrayOutside && _availableEventsArrayOutside.length > 0>>
<div class="hub-event-list-container">
<h3>! What's Happening Here? !</h3>
<!-- Loop para exibir eventos de 'Outside' aqui -->
</div>
<</if>>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">The Neighborhood</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/neighborhood/neighborhood_image_day.jpg" alt="A quiet suburban street">
</div>
</div>
<p class="hub-description">
The street is lined with well-manicured lawns and cozy-looking houses. You can feel eyes on you from behind curtained windows. Each house holds its own secrets.
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[Carol's House|CarolHouse]]
</div>
<img src="img/layout/house/house.jpg" alt="Aunt Carol's House">
</div>
<div class="location-item">
<div class="location-overlay">
[[Angela's House|AngelaHouse]]
</div>
<img src="img/layout/angela_house/house_flower.webp" alt="Angela's House">
</div>
<div class="location-item">
<div class="location-overlay">
[[Brandi's House|BrandiHouse]]
</div>
<img src="img/layout/brandi_house/brandi_house_preview.jpg" alt="Brandi's House">
</div>
<div class="location-item">
<div class="location-overlay">
[[Valerie's House|ValerieHouse]]
</div>
<img src="img/layout/valerie_house/valerie_house_preview.jpg" alt="Valerie's House">
</div>
<div class="location-item">
<div class="location-overlay">
[[Jenna's House|JennaHouse]]
</div>
<img src="img/layout/jenna_house/jenna_house_preview.jpg" alt="Jenna's House">
</div>
<div class="location-item">
<div class="location-overlay">
[[Visit Store|LocalStore]]
</div>
<img src="img/layout/store/store_outside.jpg" alt="Local Store">
</div>
<div class="location-item">
<div class="location-overlay">
[[Back to Street View|Outside]]
</div>
<img src="img/layout/neighborhood/neighborhood_image_day.jpg" alt="Back to Street View">
</div>
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">Brandi's Residence</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/brandi_house_preview.jpg" alt="Brandi's pristine and imposing house">
</div>
</div>
<p class="hub-description">
You stand before Brandi's house. It's an impeccable, almost sterile-looking modern home that screams "new money" and "judgment". The lawn is perfectly manicured, a stark contrast to the chaos brewing inside... or the chaos you plan to bring.
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[Living Room|LivingRoomBrandi]]
</div>
<img src="img/layout/brandi_house/livingroom.jpg" alt="Brandi's Living Room">
</div>
<div class="location-item">
<div class="location-overlay">
[[Kitchen|KitchenBrandi]]
</div>
<img src="img/layout/brandi_house/kitchen.jpg" alt="Brandi's Kitchen">
</div>
<div class="location-item">
<div class="location-overlay">
[[Bedroom|BedroomBrandi]]
</div>
<img src="img/layout/brandi_house/bedroom.jpg" alt="Brandi's Bedroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Guest Room|BedroomGuestBrandi]]
</div>
<img src="img/layout/brandi_house/guest_room.jpg" alt="Brandi's Guest Room">
</div>
<div class="location-item">
<div class="location-overlay">
[[Bathroom|BathroomBrandi]]
</div>
<img src="img/layout/brandi_house/bathroom.jpg" alt="Brandi's Bathroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Garden|GardenBrandi]]
</div>
<img src="img/layout/brandi_house/garden.jpg" alt="Brandi's Garden">
</div>
<div class="location-item">
<div class="location-overlay">
[[Pool Area|PoolBrandi]]
</div>
<img src="img/layout/brandi_house/pool.jpg" alt="Brandi's Pool">
</div>
<div class="location-item">
<div class="location-overlay">
[[Leave to Neighborhood|Neighborhood]]
</div>
<img src="img/layout/neighborhood/neighborhood_image_day.jpg" alt="Leave to Neighborhood">
</div>
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">Valerie's Home</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/valerie_house_preview.jpg" alt="Valerie's artistic and slightly wild-looking house">
</div>
</div>
<p class="hub-description">
You arrive at Valerie's house. It stands out from the others on the street, with a garden that feels more like a charmingly untamed meadow and wind chimes that sing softly in the breeze. There's an aura of calm, creative energy emanating from it.
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[Living Room|LivingRoomValerie]]
</div>
<img src="img/layout/valerie_house/livingroom.jpg" alt="Valerie's Living Room">
</div>
<div class="location-item">
<div class="location-overlay">
[[Kitchen|KitchenValerie]]
</div>
<img src="img/layout/valerie_house/kitchen.jpg" alt="Valerie's Kitchen">
</div>
<div class="location-item">
<div class="location-overlay">
[[Valerie's Bedroom|BedroomValerie]]
</div>
<img src="img/layout/valerie_house/bedroom_valerie.jpg" alt="Valerie's Bedroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Kenzie's Bedroom|BedroomKenzie]]
</div>
<img src="img/layout/valerie_house/bedroom_kenzie.jpg" alt="Kenzie's Bedroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Bathroom|BathroomValerie]]
</div>
<img src="img/layout/valerie_house/bathroom.jpg" alt="Valerie's Bathroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Pool Area|PoolValerie]]
</div>
<img src="img/layout/valerie_house/pool.jpg" alt="Valerie's Pool">
</div>
<div class="location-item">
<div class="location-overlay">
[[Garden|GardenValerie]]
</div>
<img src="img/layout/valerie_house/garden.jpg" alt="Valerie's Pool">
</div>
<div class="location-item">
<div class="location-overlay">
[[Leave to Neighborhood|Neighborhood]]
</div>
<img src="img/layout/neighborhood/neighborhood_image_day.jpg" alt="Leave to Neighborhood">
</div>
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">Jenna's Home</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/jenna_house_preview.jpg" alt="Jenna's modern and tidy, but slightly lonely-looking home">
</div>
</div>
<p class="hub-description">
This is Jenna's house. It's modern, clean, and well-maintained, but there's an air of stillness about it, a quietness that speaks of a home often occupied by only one. It feels... lonely.
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[Living Room|LivingRoomJenna]]
</div>
<img src="img/layout/jenna_house/livingroom.jpg" alt="Jenna's Living Room">
</div>
<div class="location-item">
<div class="location-overlay">
[[Kitchen|KitchenJenna]]
</div>
<img src="img/layout/jenna_house/kitchen.jpg" alt="Jenna's Kitchen">
</div>
<div class="location-item">
<div class="location-overlay">
[[Bedroom|BedroomJenna]]
</div>
<img src="img/layout/jenna_house/bedroom.jpg" alt="Jenna's Bedroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Bathroom|BathroomJenna]]
</div>
<img src="img/layout/jenna_house/bathroom.jpg" alt="Jenna's Bathroom">
</div>
<div class="location-item">
<div class="location-overlay">
[[Garden|GardenJenna]]
</div>
<img src="img/layout/jenna_house/garden.jpg" alt="Jenna's Garden">
</div>
<div class="location-item">
<div class="location-overlay">
[[Pool Area|PoolJenna]]
</div>
<img src="img/layout/jenna_house/pool.jpg" alt="Jenna's Pool">
</div>
<div class="location-item">
<div class="location-overlay">
[[Leave to Neighborhood|Neighborhood]]
</div>
<img src="img/layout/neighborhood/neighborhood_image_day.jpg" alt="Leave to Neighborhood">
</div>
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Brandi's living room... It feels more like a showroom than a place where people actually live. So cold and perfect.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/livingroom.jpg" alt="Brandi's immaculate living room">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "LivingRoomBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The living room is empty right now. Just the sterile silence.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Living Room->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Her kitchen is state-of-the-art. I doubt she's ever actually cooked a meal in here herself.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/kitchen.jpg" alt="Brandi's high-tech kitchen">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "KitchenBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The kitchen is empty right now. Just the hum of high-tech appliances.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Kitchen->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Her bedroom. This feels like a very dangerous place to be uninvited. Everything is white, grey, or silver. So impersonal.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/bedroom.jpg" alt="Brandi's cold and stylish bedroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BedroomBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bedroom is empty right now. Just the cold silence.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bedroom->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The guest room. I wonder if anyone ever actually stays here. It's as pristine as the rest of the house.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/guest_room.jpg" alt="Brandi's untouched guest room">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BedroomGuestBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The guest room is empty right now. Just pristine stillness.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Guest Room->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Even her bathroom looks like it's never been used. Everything is sparkling. It's almost intimidating.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/bathroom.jpg" alt="Brandi's luxurious bathroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BathroomBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bathroom is empty right now. Just the sparkle of cleanliness.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bathroom->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Her garden is a work of art. Not a single leaf out of place. It's clear she pays someone a lot of money to keep it this way.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/garden.jpg" alt="Brandi's perfectly manicured garden">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "GardenBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The garden is empty right now. Just the scent of perfection.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Garden->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
A pristine, crystal-clear pool. It looks like it belongs in a five-star resort. I bet the water is heated to the exact perfect temperature.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/pool.jpg" alt="Brandi's luxurious pool area">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "PoolBrandi">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The pool area is empty right now. Just the sound of water.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Pool Area->BrandiHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Valerie's living room is a vibrant explosion of color. Canvases lean against walls, pottery sits on every surface, and the air smells like incense and turpentine. It's chaotic, but warm.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/livingroom.jpg" alt="Valerie's colorful and artistic living room">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "LivingRoomValerie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The living room is empty right now. Just the echo of creativity.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Living Room->ValerieHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The kitchen is surprisingly tidy compared to the living room. It smells like herbal tea and... clay?
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/kitchen.jpg" alt="Valerie's cozy and herbal kitchen">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "KitchenValerie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The kitchen is empty right now. Just the scent of herbs.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Kitchen->ValerieHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Valerie's bedroom... It's just as eclectic as the living room. Dreamcatchers hang from the ceiling, and there's a faint, sweet smell of sandalwood in the air. This feels like her personal sanctuary.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/bedroom_valerie.jpg" alt="Valerie's artistic and spiritual bedroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BedroomValerie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">Valerie's bedroom is empty right now. Just the scent of sandalwood.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Valerie's Bedroom->ValerieHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
So this is Kenzie's room. It's... surprisingly normal. Band posters on the wall, a gaming console hooked up to a small TV, clothes strewn over a chair. A typical teenager's den.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/bedroom_kenzie.jpg" alt="Kenzie's typical teenage bedroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BedroomKenzie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">Kenzie's room is empty right now. Just the hum of a gaming console.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Kenzie's Bedroom->ValerieHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The main bathroom. It has a big, inviting tub and is filled with various bath bombs and scented oils. Definitely Valerie's touch.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/bathroom.jpg" alt="Valerie's relaxing and aromatic bathroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BathroomValerie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bathroom is empty right now. Just the scent of oils.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bathroom->ValerieHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Their pool area is surrounded by lush, overgrown plants. It feels secluded and private, like a hidden lagoon.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/pool.jpg" alt="Valerie's secluded and natural pool">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "PoolValerie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The pool area is empty right now. Just the sound of nature.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Pool Area->ValerieHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Jenna's living room is cozy and comfortable. A large TV dominates one wall, and a few fitness magazines are neatly stacked on the coffee table.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/livingroom.jpg" alt="Jenna's cozy and modern living room">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "LivingRoomJenna">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The living room is empty right now. Just the hum of the TV.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Living Room->JennaHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Her kitchen is practical and well-stocked with healthy foods and protein powders. Definitely the kitchen of someone who works out.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/kitchen.jpg" alt="Jenna's clean and healthy kitchen">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "KitchenJenna">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The kitchen is empty right now. Just the scent of protein powder.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Kitchen->JennaHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Her bedroom. A huge bed dominates the room, but it feels empty. There's a picture of her and a man in military uniform on the nightstand. Her husband, I guess.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/bedroom.jpg" alt="Jenna's neat and lonely bedroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BedroomJenna">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bedroom is empty right now. Just the silence of an empty space.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bedroom->JennaHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
A clean, modern bathroom. There are two sinks, but only one seems to get regular use. A subtle reminder of her husband's absence.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/bathroom.jpg" alt="Jenna's modern and clean bathroom">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BathroomJenna">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bathroom is empty right now. Just the echo of silence.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bathroom->JennaHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Her garden is simple but very well-kept. Looks like she spends a lot of time out here, maybe to keep her mind off things.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/garden.jpg" alt="Jenna's peaceful and tidy garden">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "GardenJenna">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The garden is empty right now. Just the quiet of nature.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Garden->JennaHouse]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
A nice, simple pool. It's clean and looks like a great place to work out or just relax in private.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/jenna_house/pool.jpg" alt="Jenna's private pool">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "PoolJenna">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The pool is empty right now. Just the ripple of water.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Pool Area->JennaHouse]]
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">The Park</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/park/park_preview.jpg" alt="A sprawling city park on a sunny day">
</div>
</div>
<p class="hub-description">
The city park is a sprawling expanse of green. You can hear the distant laughter of children, the rhythmic thud of a basketball, and the soft crunch of gravel under joggers' feet. It feels alive with possibilities, both innocent and otherwise.
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[Running Trail|ParkTrail]]
</div>
<img src="img/layout/park/trail.jpg" alt="A winding running trail through the trees">
</div>
<div class="location-item">
<div class="location-overlay">
[[Lake Bench|ParkLakeBench]]
</div>
<img src="img/layout/park/lake_bench.jpg" alt="A secluded bench overlooking a small lake">
</div>
<div class="location-item">
<div class="location-overlay">
[[Playground|ParkPlayground]]
</div>
<img src="img/layout/park/playground.jpg" alt="A colorful children's playground">
</div>
<div class="location-item">
<div class="location-overlay">
[[Sports Courts|ParkCourts]]
</div>
<img src="img/layout/park/courts.jpg" alt="Basketball and tennis courts">
</div>
<div class="location-item">
<div class="location-overlay">
[[Leave Park|Outside]]
</div>
<img src="img/layout/house/house.jpg" alt="Leave the park area">
</div>
</div>
<div id="park-event-container">
<<silently>>
<<set _availableEventsPark to []>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _eventId, _event range $events>>
<<if _event.location is "Park" and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">> <<set _eventReqMet to ($missions[_event.requirements.id] && $missions[_event.requirements.id].status === 1)>>
<<elseif _event.requirements.type is "scene">> <<set _eventReqMet to ($scenes[_event.requirements.id] && $scenes[_event.requirements.id].status === 1)>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsPark.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</silently>>
<<if _availableEventsPark.length > 0>>
<div class="hub-event-list-container">
<h3>! Special Events Happening !</h3>
<<for _i, _eventData range _availableEventsPark>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title">The City Center</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/city_center_preview.jpg" alt="A bustling city center with modern buildings">
</div>
</div>
<p class="hub-description">
You arrive in the heart of the city. The energy here is completely different from the quiet suburbs. People rush by, traffic hums, and the air is thick with ambition, commerce, and the faint promise of anonymity. Anything can happen here.
</p>
<div class="hub-navigation-grid">
<div class="location-item">
<div class="location-overlay">
[[Gym|Gym]]
</div>
<img src="img/layout/city/gym.jpg" alt="A modern, well-equipped gym">
</div>
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">Mall<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/city/mall.jpg" alt="The entrance to a large shopping mall">
</div>
<div class="location-item">
<div class="location-overlay">
[[The Gilded Lily|BarGildedLily]]
</div>
<img src="img/layout/city/bar_dive.jpg" alt="A chic and expensive-looking bar">
</div>
<div class="location-item">
<div class="location-overlay">
[[The Rusty Mug|BarRustyMug]]
</div>
<img src="img/layout/city/bar_chic.jpg" alt="A cozy but somewhat gritty dive bar">
</div>
<div class="location-item">
<div class="location-overlay">
[[The Daily Grind|CoffeeShop]]
</div>
<img src="img/layout/city/coffee_shop.jpg" alt="A trendy coffee shop">
</div>
<div class="location-item">
<div class="location-overlay">
[[Public Library|Library]]
</div>
<img src="img/layout/city/library.jpg" alt="The city's public library">
</div>
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">Standard Apartments<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/city/apartments_standard.jpg" alt="A standard apartment building">
</div>
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">Luxury Apartments<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/city/apartments_luxury.jpg" alt="A luxurious, high-end apartment complex">
</div>
<div class="location-item">
<div class="location-overlay">
[[Leave City Center|Outside]]
</div>
<img src="img/layout/house/house.jpg" alt="Leave the city center area">
</div>
</div>
<div id="citycenter-event-container">
<<silently>>
<<set _availableEventsCityCenter to []>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _eventId, _event range $events>>
<<if _event.location is "CityCenter" and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">> <<set _eventReqMet to ($missions[_event.requirements.id] && $missions[_event.requirements.id].status === 1)>>
<<elseif _event.requirements.type is "scene">> <<set _eventReqMet to ($scenes[_event.requirements.id] && $scenes[_event.requirements.id].status === 1)>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsCityCenter.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</silently>>
<<if _availableEventsCityCenter.length > 0>>
<div class="hub-event-list-container">
<h3>! Special Events Happening !</h3>
<<for _i, _eventData range _availableEventsCityCenter>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
</div>
</div><div class="game-container world-hub-container">
<h2 class="hub-title" style="color: #FF6347;">The Outskirts</h2>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/outskirts/outskirts_preview.jpg" alt="The decaying industrial outskirts of the city at dusk">
</div>
</div>
<p class="hub-description" style="color: #c0a0a0;">
You've reached the edge of the city, the part Aunt Carol warned you about. The air is heavy, the buildings are crumbling monuments to forgotten industry. Every shadow seems to hold a secret, and every distant noise sounds like a threat. This place is dangerous, but it also hums with a raw, unfiltered energy. For now, perhaps it's best to heed Carol's warning...
</p>
<div class="hub-navigation-grid">
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">"The Pit" Fight Club<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/outskirts/warehouse.jpg" alt="A large, abandoned warehouse">
</div>
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">"The Alley"<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/outskirts/alley.jpg" alt="A dark and menacing back alley">
</div>
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">"Sleepy Hollow" Motel<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/outskirts/motel.jpg" alt="A rundown roadside motel with a flickering neon sign">
</div>
<div class="location-item" style="filter: grayscale(90%) brightness(0.6); cursor: not-allowed;">
<div class="location-overlay" style="background-color: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; opacity: 1;">
<span style="color: #FF6347; font-size: 1rem; font-weight: bold; text-shadow: 1px 1px 2px black;">"The Velvet Curtain"<br><em style="font-size: 0.8em; color: #aaa;">(In Development)</em></span>
</div>
<img src="img/layout/outskirts/strip_club.jpg" alt="A nondescript building with a single red light above the door">
</div>
<div class="location-item">
<div class="location-overlay">
[[Leave the Outskirts|Outside]]
</div>
<img src="img/layout/house/house.jpg" alt="Return to the relative safety of the suburbs">
</div>
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The running trail is quiet, save for the sound of my own footsteps and the wind in the trees. I wonder who I might run into here.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/park/trail.jpg" alt="A winding running trail through the trees">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "ParkTrail">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The trail is empty right now. Just you and your thoughts.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
[[Run|RunningPark]]
[[Photograph Nature|PhotoNaturePark]]
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Trail->Park]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
A secluded bench overlooks a small, serene lake. The water reflects the sky, and the quiet is broken only by the occasional ripple from a fish. It's a peaceful spot to think.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/park/lake_bench.jpg" alt="A secluded bench overlooking a small lake">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "ParkLakeBench">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The lake bench is empty right now. Just the sound of water.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
[[Observe People|ObservationParkLake]]
[[Feed Ducks|FeedDucksParkLake]]
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Return to Park->Park]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The playground is alive with the sound of children laughing and playing. Bright colors and swings fill the air with a sense of carefree joy.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/park/playground.jpg" alt="A colorful children's playground">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "ParkPlayground">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The playground is empty right now. Just the silence of swings.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Return to Park->Park]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The sports courts buzz with activity. Basketball hoops clang with missed shots, and tennis rackets slice through the air. It's a place of energy and competition.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/park/courts.jpg" alt="Basketball and tennis courts">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "ParkCourts">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The sports courts are empty right now. Just the echo of silence.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
[[Play Basketball|BasketballParkCourts]]
[[Do Yoga|YogaParkCourts]]
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Return to Park->Park]]
</div>
</div><div class="game-container">
<<if $dailyActivities.running.count < $dailyActivities.running.limit>>
<<set $dailyActivities.running.count += 1>>
<<set $player.running += 2>>
<<set _statChanges to ["+2 Running"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _runPhrases to ["While running, you spotted a hot girl jogging nearby.", "As you ran, a gorgeous runner caught your eye.", "Mid-run, you noticed a stunning woman keeping pace.", "While jogging, you saw a sexy figure running ahead.", "During your run, a beautiful jogger passed by."]>>
<<set _randomPhrase to _runPhrases[random(0, _runPhrases.length - 1)]>>
<div class="dialog-text player">
You went for a run along the trail. <<print _randomPhrase>> Feel the adrenaline!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<if $maxRunningGifs is undefined>> <<set $maxRunningGifs to 5>> <</if>>
<<set _randomGifNum to random(1, $maxRunningGifs)>>
<<set _gifPath to "img/chars/random/girls_running/girl_running_" + _randomGifNum + ".gif">>
<<print '<img src="' + _gifPath + '" alt="Random girl running GIF">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've already run enough today. Time to rest and recover your energy!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Trail->ParkTrail]]
</div>
</div><div class="game-container">
<<if $dailyActivities.photography.count < $dailyActivities.photography.limit>>
<<set $dailyActivities.photography.count += 1>>
<<set $player.photography += 2>>
<<set _statChanges to ["+2 Photography"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You decided to photograph nature along the trail. During your session, you managed to snap some shots of a few girls... some quite revealing!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<if $maxNaturePhotos is undefined>> <<set $maxNaturePhotos to 13>> <</if>>
<<set _randomPhoto1Num to random(1, $maxNaturePhotos)>>
<<set _randomPhoto2Num to random(1, $maxNaturePhotos)>>
<<if _randomPhoto1Num is _randomPhoto2Num>>
<<set _randomPhoto2Num to (_randomPhoto2Num % $maxNaturePhotos) + 1>>
<</if>>
<<set _photoPath1 to "img/chars/random/girls_nature_photo/nature_" + _randomPhoto1Num + ".jpg">>
<<set _photoPath2 to "img/chars/random/girls_nature_photo/nature_" + _randomPhoto2Num + ".jpg">>
<<print '<img class="nature-photo" src="' + _photoPath1 + '" alt="Random nature girl photo 1">'>>
<<print '<img class="nature-photo" src="' + _photoPath2 + '" alt="Random nature girl photo 2">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've taken enough photos today. Your camera is overheating – time to give it a break!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Trail->ParkTrail]]
</div>
</div><div class="game-container">
<<if $dailyActivities.observationParkLake.count < $dailyActivities.observationParkLake.limit>>
<<set $dailyActivities.observationParkLake.count += 1>>
<<set $player.observation += 2>>
<<set _statChanges to ["+2 Observation"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _observePhrases to ["From your spot, you catch glimpses of couples lost in their own world.", "You notice pairs getting cozy, sharing intimate moments by the lake.", "Distant figures seem wrapped up in passion, oblivious to surroundings.", "Couples appear to be enjoying each other's company in playful ways.", "You spot some heated interactions unfolding in the shadows.", "Pairs are getting affectionate, making the most of the serene setting.", "From afar, you see sparks flying between lovers.", "Intimate encounters catch your eye, hidden among the trees.", "Couples are indulging in private fun, adding excitement to the view.", "You observe tender and wild moments shared between partners."]>>
<<set _randomPhrase to _observePhrases[random(0, _observePhrases.length - 1)]>>
<div class="dialog-text player">
You settle on the bench to observe people around the lake. <<print _randomPhrase>> It's quite the sight!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<if $maxObservationGifs is undefined>> <<set $maxObservationGifs to 5>> <</if>>
<<set _randomGifNum to random(1, $maxObservationGifs)>>
<<set _gifPath to "img/chars/random/couples_observation_park_lake/couples_observation_" + _randomGifNum + ".webp">>
<<print '<img src="' + _gifPath + '" alt="Random couple observation GIF">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've observed enough people for today. Your eyes need a rest – time to move on!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Bench->ParkLakeBench]]
</div>
</div><div class="game-container">
<<if $dailyActivities.feedDucks.count < $dailyActivities.feedDucks.limit>>
<<set $dailyActivities.feedDucks.count += 1>>
<<set _luckRoll to random(1, 100)>>
<<set _outcome to "neutral">>
<<if _luckRoll <= 30 - $player.luck>> <!-- Alta chance de ruim com luck baixa (ex: luck 0 = 30% chance ruim) -->
<<set _outcome to "bad">>
<<set $player.animalCare -= 2>>
<<set _statChanges to ["-2 Animal Care (The ducks chased you!)"]>>
<<elseif _luckRoll <= 70 + $player.luck * 2>> <!-- Chance de neutro, ajustada por luck -->
<<set _outcome to "neutral">>
<<set $player.animalCare += 1>>
<<set _statChanges to ["+1 Animal Care (Ducks ate peacefully.)"]>>
<<else>> <!-- Alta chance de bom com luck alta (ex: luck 10 = chance >70% bom) -->
<<set _outcome to "good">>
<<set $player.animalCare += 2>>
<<set $player.lust += 10>>
<<set _statChanges to ["+2 Animal Care", "+10 Lust (A woman gave you a handjob!)"]>>
<</if>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<if _outcome is "bad">>
You tried to feed the ducks, but they got aggressive and chased you around the lake! Not your best moment.
<<elseif _outcome is "good">>
As you fed the ducks, a mysterious woman approached, sat beside you, and things got intimate – she gave you an unforgettable handjob right there on the bench!
<<else>>
The ducks happily ate the food you tossed. A calm and satisfying experience.
<</if>>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _randomNum to random(1, 3)>>
<<if _outcome is "bad">>
<<set _imgPath to "img/etc/running_ducks/running_duck_" + _randomNum + ".gif">>
<<elseif _outcome is "good">>
<<set _imgPath to "img/chars/random/girls_handjob_at_park_lake/handjob_park_lake_" + _randomNum + ".webp">>
<<else>>
<<set _imgPath to "img/etc/feed_ducks/feed_duck_" + _randomNum + ".gif">>
<</if>>
<<print '<img src="' + _imgPath + '" alt="Random feed ducks outcome image">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've already fed the ducks today. They're full – come back tomorrow!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Bench->ParkLakeBench]]
</div>
</div><div class="game-container">
<<if $dailyActivities.playBasketball.count < $dailyActivities.playBasketball.limit>>
<<set $dailyActivities.playBasketball.count += 1>>
<<set $player.athleticism += 2>>
<<set _statChanges to ["+2 Athleticism"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _basketPhrases to ["You join a game with a stunning woman, feeling the intensity build.", "The court heats up as you match moves with a sexy opponent.", "Playing one-on-one, her athletic grace catches your eye.", "You guard her closely, the energy between you electric.", "She dribbles and shoots, making every moment thrilling.", "The game flows with playful competition and subtle tension."]>>
<<set _randomPhrase to _basketPhrases[random(0, _basketPhrases.length - 1)]>>
<div class="dialog-text player">
You hit the courts for a game of basketball with a hot woman. <<print _randomPhrase>> What a workout!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _randomGifNum to random(1, 6)>>
<<set _gifPath to "img/chars/random/girls_play_basketball/basketball_" + _randomGifNum + ".webp">>
<<print '<img src="' + _gifPath + '" alt="Random basketball GIF">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've played enough basketball today. Time to cool down and rest!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Courts->ParkCourts]]
</div>
</div>
<div class="game-container">
<<if $dailyActivities.yogaParkCourt.count < $dailyActivities.yogaParkCourt.limit>>
<<set $dailyActivities.yogaParkCourt.count += 1>>
<<set $player.flexibility += 2>>
<<set _statChanges to ["+2 Flexibility"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _yogaPhrases to ["You join the group, flowing through poses with graceful women around.", "The session stretches your body, surrounded by flexible figures.", "Breathing deep, you match the rhythmic movements of the class.", "Poses unfold, creating a serene yet charged atmosphere.", "You feel the pull and release, eyes drawn to elegant forms.", "The group moves in harmony, blending relaxation and subtle allure."]>>
<<set _randomPhrase to _yogaPhrases[random(0, _yogaPhrases.length - 1)]>>
<div class="dialog-text player">
You join a yoga session with a group of women on the courts. <<print _randomPhrase>> So relaxing and invigorating!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _randomGifNum to random(1, 6)>>
<<set _gifPath to "img/chars/random/girls_yoga_park/yoga_" + _randomGifNum + ".webp">>
<<print '<img src="' + _gifPath + '" alt="Random yoga GIF">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've done enough yoga today. Your body needs time to recover!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Courts->ParkCourts]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The gym is buzzing with activity – weights clanging, treadmills humming, and people pushing their limits. A great spot to build strength and maybe spot some eye candy.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/gym.jpg" alt="A modern gym interior with equipment">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "Gym">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The gym is quiet right now. Just the hum of machines.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
[[Workout|WorkoutGym]]
[[Cardio|CardioGym]]
</div>
</div>
<div class="hub-navigation-grid" style="margin-top: 20px;">
<div class="location-item">
<div class="location-overlay">
[[Male Locker Room|MaleLockerRoom]]
</div>
<img src="img/layout/city/gym/male_locker_room.jpg" alt="Male locker room in the gym">
</div>
<div class="location-item">
<div class="location-overlay">
[[Female Locker Room|FemaleLockerRoom]]
</div>
<img src="img/layout/city/gym/female_locker_room.jpg" alt="Female locker room in the gym">
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Gym->CityCenter]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The Gilded Lily is the local dive bar, a gritty spot for the everyday crowd. Dim lights, sticky floors, and the hum of conversation fill the air.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/bar_dive.jpg" alt="A gritty dive bar interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BarGildedLily">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bar is quiet right now. Just the clink of glasses.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="hub-navigation-grid" style="margin-top: 20px;">
<div class="location-item">
<div class="location-overlay">
[[Bathroom|BathroomGildedLily]]
</div>
<img src="img/layout/city/bar_dive/bar_dive_bathroom.jpg" alt="Bathroom in the dive bar">
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bar->CityCenter]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The Rusty Mug is an upscale, chic bar with elegant decor, soft lighting, and a sophisticated crowd sipping fine drinks.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/bar_chic.jpg" alt="A chic and upscale bar interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BarRustyMug">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bar is quiet right now. Just the murmur of refined conversations.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Bar->CityCenter]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The Daily Grind is a trendy coffee shop, filled with the aroma of fresh brews and the buzz of caffeine-fueled conversations.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/coffee_shop.jpg" alt="A trendy coffee shop interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "CoffeeShop">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The coffee shop is quiet right now. Just the whir of the espresso machine.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
<<link "Buy Coffee (5 Money)">>
<<if $player.money >= 5>>
<<set $player.money -= 5>>
<<set $player.energy += 10>>
<<replace "#coffee-result">>
<div class="stat-changes-container">
<p>-5 Money</p>
<p>+10 Energy</p>
</div>
<p>You enjoy a hot cup of coffee, feeling energized!</p>
<</replace>>
<<replace "#story-caption">>
<div class="stats">
<div class="game-stats">
<!-- Tempo em formato 24h -->
<div class="time-display">$time:00</div>
<div class="day-display">$actualDay</div>
<!-- Determinação do período atual -->
<<if $time >= 6 && $time <= 10>>
<div class="period-indicator period-morning"><<print $period.morning.label>></div>
<<elseif $time >= 11 && $time <= 13>>
<div class="period-indicator period-noon"><<print $period.noon.label>></div>
<<elseif $time >= 14 && $time <= 17>>
<div class="period-indicator period-afternoon"><<print $period.afternoon.label>></div>
<<elseif $time >= 18 && $time <= 21>>
<div class="period-indicator period-evening"><<print $period.evening.label>></div>
<<else>>
<div class="period-indicator period-night"><<print $period.night.label>></div>
<</if>>
</div>
<!-- BOTÃO DE AVANÇAR O TEMPO MOVIDO PARA CÁ -->
<div class="advance-time-button-container">
<<link "<span class='emoji'>⏰</span> Advance 1 Hour" `passage()`>>
<<set $time += 1>>
<<set $player.energy -= 2>>
<<if $player.energy < 0>> <<set $player.energy to 0>> <</if>>
<<if $time >= 24>>
<<set $time -= 24>>
/* A lógica completa de virada de dia deve residir principalmente na SleepSequence */
/* Aqui, apenas resetamos a hora. A SleepSequence cuidará de $actualDay e resets diários. */
<</if>>
<</link>>
</div>
<div class="player-stats">
<h3>Player Stats</h3>
<div class="stat-row">
<span class="stat-label">⚡ Energy: <<= $player.energy>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">💰 Money: $<<= $player.money>></span>
</div>
<div class="stat-row">
<span class="stat-label">❤️ Lust: <<= $player.lust>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">🎭 Charisma: <<= $player.charisma>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">🧠 Intelligence: <<= $player.intelligence>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">💪 Strength: <<= $player.strength>>%</span>
</div>
</div>
<div class="active-missions">
<h3>Active Missions</h3>
<<set _activeMissionCount to 0>>
<<for _id, _mission range $missions>>
<<if _mission.status === 0 and _activeMissionCount < 3>>
<div class="mission">
<span class="mission-name"><<print _mission.name>></span>
<div class="badges">
<span class="badge badge-location"><<print _mission.location>></span>
<span class="badge badge-day"><<print _mission.day>></span>
<span class="badge badge-period"><<print _mission.period>></span>
</div>
</div>
<<set _activeMissionCount += 1>>
<</if>>
<</for>>
<<if _activeMissionCount === 0>>
<p class="no-content-sidebar">No active missions.</p>
<</if>>
</div>
<!-- NOVA LÓGICA: Available Scenes -->
<div class="available-scenes">
<h3>Upcoming Scenes</h3> <!-- Renomeado para mais clareza -->
<<set _availableSceneCount to 0>>
<<set _maxScenesToShowInSidebar to 3>> <!-- Limite para não poluir -->
<<for _sceneKey, _sceneData range $scenes>>
<<if _sceneData.status === 0>> <!-- Apenas cenas não jogadas -->
<<set _requirementsMet to false>>
<<set _reqDetails to _sceneData.requirements>>
<<if _reqDetails.type is "none">>
<<set _requirementsMet to true>>
<<elseif _reqDetails.type is "mission">>
<<set _requiredMissionKey to "">>
<<for _mKey, _mDetails range $missions>>
<<if _mDetails.passage is _reqDetails.id>>
<<set _requiredMissionKey to _mKey>>
<<break>>
<</if>>
<</for>>
<<if _requiredMissionKey isnot "" and $missions[_requiredMissionKey] and $missions[_requiredMissionKey].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "scene">>
<<set _requiredSceneKey to "">>
<<for _sKey, _sDetails range $scenes>>
<<if _sDetails.passage is _reqDetails.id>>
<<set _requiredSceneKey to _sKey>>
<<break>>
<</if>>
<</for>>
<<if _requiredSceneKey isnot "" and $scenes[_requiredSceneKey] and $scenes[_requiredSceneKey].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "event">>
<<if $events[_reqDetails.id] and $events[_reqDetails.id].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "item">>
<<if $player.inventory.includes(_reqDetails.item)>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "stats">>
<<set _requirementsMet to true>> /* Assume true, anula se alguma falhar */
<<for _statName, _statValue range _reqDetails>>
<<if _statName isnot "type">>
<<if not $player[_statName] or $player[_statName] < _statValue>>
<<set _requirementsMet to false>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if _requirementsMet and _availableSceneCount < _maxScenesToShowInSidebar>>
<div class="scene-entry">
<span class="scene-entry-name"><<print _sceneKey.replace(/([A-Z](?=[a-z]))/g, ' $1').trim()>></span> <!-- Usa a CHAVE da cena para nomear -->
<div class="badges">
<span class="badge badge-location" title="Location"><<print _sceneData.location>></span>
<span class="badge badge-day" title="Day(s)"><<print _sceneData.day>></span>
<span class="badge badge-period" title="Period(s)"><<print _sceneData.period>></span>
</div>
</div>
<<set _availableSceneCount += 1>>
<</if>>
<</if>>
<</for>>
<<if _availableSceneCount === 0>>
<p class="no-content-sidebar">No new opportunities with met requirements right now.</p>
<</if>>
</div>
</div>
<</replace>>
<<else>>
<<replace "#coffee-result">>
<p>You don't have enough money (need 5) to buy coffee.</p>
<</replace>>
<</if>>
<</link>>
</div>
</div>
<div id="coffee-result"></div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Coffee Shop->CityCenter]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The public library is a quiet haven of knowledge, with shelves of books and focused patrons immersed in their studies.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/library.jpg" alt="The city's public library interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "Library">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The library is quiet right now. Just the rustle of pages.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
<<link "Study">>
<<if $dailyActivities.studyLibrary.count < $dailyActivities.studyLibrary.limit>>
<<set $dailyActivities.studyLibrary.count += 1>>
<<set $player.intelligence += 2>>
<<set $time += 2>>
<<if $time >= 24>>
<<set $time -= 24>>
/* Ajuste para virada de dia, se necessário */
<</if>>
<<replace "#study-result">>
<div class="stat-changes-container">
<p>+2 Intelligence</p>
<p>+2 Hours Passed</p>
</div>
<p>You hit the books and absorb some knowledge. Time well spent!</p>
<</replace>>
<<replace "#story-caption">>
<div class="stats">
<div class="game-stats">
<!-- Tempo em formato 24h -->
<div class="time-display">$time:00</div>
<div class="day-display">$actualDay</div>
<!-- Determinação do período atual -->
<<if $time >= 6 && $time <= 10>>
<div class="period-indicator period-morning"><<print $period.morning.label>></div>
<<elseif $time >= 11 && $time <= 13>>
<div class="period-indicator period-noon"><<print $period.noon.label>></div>
<<elseif $time >= 14 && $time <= 17>>
<div class="period-indicator period-afternoon"><<print $period.afternoon.label>></div>
<<elseif $time >= 18 && $time <= 21>>
<div class="period-indicator period-evening"><<print $period.evening.label>></div>
<<else>>
<div class="period-indicator period-night"><<print $period.night.label>></div>
<</if>>
</div>
<!-- BOTÃO DE AVANÇAR O TEMPO MOVIDO PARA CÁ -->
<div class="advance-time-button-container">
<<link "<span class='emoji'>⏰</span> Advance 1 Hour" `passage()`>>
<<set $time += 1>>
<<set $player.energy -= 2>>
<<if $player.energy < 0>> <<set $player.energy to 0>> <</if>>
<<if $time >= 24>>
<<set $time -= 24>>
/* A lógica completa de virada de dia deve residir principalmente na SleepSequence */
/* Aqui, apenas resetamos a hora. A SleepSequence cuidará de $actualDay e resets diários. */
<</if>>
<</link>>
</div>
<div class="player-stats">
<h3>Player Stats</h3>
<div class="stat-row">
<span class="stat-label">⚡ Energy: <<= $player.energy>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">💰 Money: $<<= $player.money>></span>
</div>
<div class="stat-row">
<span class="stat-label">❤️ Lust: <<= $player.lust>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">🎭 Charisma: <<= $player.charisma>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">🧠 Intelligence: <<= $player.intelligence>>%</span>
</div>
<div class="stat-row">
<span class="stat-label">💪 Strength: <<= $player.strength>>%</span>
</div>
</div>
<div class="active-missions">
<h3>Active Missions</h3>
<<set _activeMissionCount to 0>>
<<for _id, _mission range $missions>>
<<if _mission.status === 0 and _activeMissionCount < 3>>
<div class="mission">
<span class="mission-name"><<print _mission.name>></span>
<div class="badges">
<span class="badge badge-location"><<print _mission.location>></span>
<span class="badge badge-day"><<print _mission.day>></span>
<span class="badge badge-period"><<print _mission.period>></span>
</div>
</div>
<<set _activeMissionCount += 1>>
<</if>>
<</for>>
<<if _activeMissionCount === 0>>
<p class="no-content-sidebar">No active missions.</p>
<</if>>
</div>
<!-- NOVA LÓGICA: Available Scenes -->
<div class="available-scenes">
<h3>Upcoming Scenes</h3> <!-- Renomeado para mais clareza -->
<<set _availableSceneCount to 0>>
<<set _maxScenesToShowInSidebar to 3>> <!-- Limite para não poluir -->
<<for _sceneKey, _sceneData range $scenes>>
<<if _sceneData.status === 0>> <!-- Apenas cenas não jogadas -->
<<set _requirementsMet to false>>
<<set _reqDetails to _sceneData.requirements>>
<<if _reqDetails.type is "none">>
<<set _requirementsMet to true>>
<<elseif _reqDetails.type is "mission">>
<<set _requiredMissionKey to "">>
<<for _mKey, _mDetails range $missions>>
<<if _mDetails.passage is _reqDetails.id>>
<<set _requiredMissionKey to _mKey>>
<<break>>
<</if>>
<</for>>
<<if _requiredMissionKey isnot "" and $missions[_requiredMissionKey] and $missions[_requiredMissionKey].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "scene">>
<<set _requiredSceneKey to "">>
<<for _sKey, _sDetails range $scenes>>
<<if _sDetails.passage is _reqDetails.id>>
<<set _requiredSceneKey to _sKey>>
<<break>>
<</if>>
<</for>>
<<if _requiredSceneKey isnot "" and $scenes[_requiredSceneKey] and $scenes[_requiredSceneKey].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "event">>
<<if $events[_reqDetails.id] and $events[_reqDetails.id].status === 1>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "item">>
<<if $player.inventory.includes(_reqDetails.item)>>
<<set _requirementsMet to true>>
<</if>>
<<elseif _reqDetails.type is "stats">>
<<set _requirementsMet to true>> /* Assume true, anula se alguma falhar */
<<for _statName, _statValue range _reqDetails>>
<<if _statName isnot "type">>
<<if not $player[_statName] or $player[_statName] < _statValue>>
<<set _requirementsMet to false>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if _requirementsMet and _availableSceneCount < _maxScenesToShowInSidebar>>
<div class="scene-entry">
<span class="scene-entry-name"><<print _sceneKey.replace(/([A-Z](?=[a-z]))/g, ' $1').trim()>></span> <!-- Usa a CHAVE da cena para nomear -->
<div class="badges">
<span class="badge badge-location" title="Location"><<print _sceneData.location>></span>
<span class="badge badge-day" title="Day(s)"><<print _sceneData.day>></span>
<span class="badge badge-period" title="Period(s)"><<print _sceneData.period>></span>
</div>
</div>
<<set _availableSceneCount += 1>>
<</if>>
<</if>>
<</for>>
<<if _availableSceneCount === 0>>
<p class="no-content-sidebar">No new opportunities with met requirements right now.</p>
<</if>>
</div>
</div>
<</replace>>
<<else>>
<<replace "#study-result">>
<p>You've already studied enough today. Time to take a break!</p>
<</replace>>
<</if>>
<</link>>
</div>
</div>
<div id="study-result"></div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Library->CityCenter]]
</div>
</div><div class="game-container">
<<if $dailyActivities.gymTraining.count < $dailyActivities.gymTraining.limit>>
<<set $dailyActivities.gymTraining.count += 1>>
<<set $player.strength += 2>>
<<set _statChanges to ["+2 Strength"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _workoutPhrases to ["You pump iron, catching sight of a fit woman lifting nearby, her form captivating.", "The weights feel good, especially with that sexy trainer demonstrating moves.", "Sweat builds as you spot a hot girl on the bench press, her intensity turning you on.", "You push through reps, eyes drawn to a curvaceous figure squatting deeply.", "The gym vibe is electric, with a stunning woman flexing in the mirror.", "Lifting heavy, you notice a seductive athlete stretching after her set.", "Your muscles burn, but so does the view of that toned beauty on the machines.", "A powerful session, interrupted by glimpses of a voluptuous woman working out hard.", "You grind through the routine, spotting a playful interaction between fit bodies.", "The effort pays off, especially with that alluring woman dominating the free weights."]>>
<<set _randomPhrase to _workoutPhrases[random(0, _workoutPhrases.length - 1)]>>
<div class="dialog-text player">
You dive into a intense workout session at the gym. <<print _randomPhrase>> What a pump!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<if $maxWorkoutWebps is undefined>> <<set $maxWorkoutWebps to 15>> <</if>>
<<set _randomWebpNum to random(1, $maxWorkoutWebps)>>
<<set _webpPath to "img/layout/city/gym/workout/workout_" + _randomWebpNum + ".webp">>
<<print '<img src="' + _webpPath + '" alt="Random workout WEBP">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've already trained enough today. Your muscles need time to recover!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Gym->Gym]]
</div>
</div><div class="game-container">
<<if $dailyActivities.gymCardio.count < $dailyActivities.gymCardio.limit>>
<<set $dailyActivities.gymCardio.count += 1>>
<<set $player.running += 2>>
<<set $player.cardio += 2>>
<<set _statChanges to ["+2 Running", "+2 Cardio"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _cardioPhrases to ["You hit the treadmill, watching a fit woman running with effortless grace.", "The cardio machines hum as you spot a sexy runner pushing her limits.", "Sweat flies while you notice a hot girl cycling intensely nearby.", "Your heart races, matching the pace of that stunning woman on the elliptical.", "Endurance builds, eyes locked on a curvaceous figure jogging in place.", "The session heats up with glimpses of an alluring athlete in motion.", "You push through the burn, drawn to a voluptuous woman stretching her strides."]>>
<<set _randomPhrase to _cardioPhrases[random(0, _cardioPhrases.length - 1)]>>
<div class="dialog-text player">
You focus on cardio at the gym. <<print _randomPhrase>> Feel the burn!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<if $maxCardioWebps is undefined>> <<set $maxCardioWebps to 15>> <</if>>
<<set _randomWebpNum to random(1, $maxCardioWebps)>>
<<set _webpPath to "img/layout/city/gym/cardio/cardio_" + _randomWebpNum + ".webp">>
<<print '<img src="' + _webpPath + '" alt="Random cardio WEBP">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You've done enough cardio today. Time to catch your breath!
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Gym->Gym]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The male locker room is steamy and functional, with lockers lining the walls and the faint echo of showers running.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/gym/male_locker_room.jpg" alt="Male locker room interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "MaleLockerRoom">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The male locker room is empty right now.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Return to Gym->Gym]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The female locker room is humid and private, with rows of lockers and the sound of water from the showers.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/gym/female_locker_room.jpg" alt="Female locker room interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "FemaleLockerRoom">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (MISSIONS E SCENES) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<set _foundHere to false>>
/* Verificar MISSIONS dos RandomEncounters */
<<if _charData.missions and !_foundHere>>
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<set _foundHere to true>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
/* Verificar SCENES dos RandomEncounters */
<<if _charData.scenes and !_foundHere>>
<<for _sceneKey, _sceneData range _charData.scenes>>
<<if _sceneData.location is $locationName and _sceneData.status is 0 and Array.isArray(_sceneData.day) and _sceneData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _sceneData.period is "string" and _sceneData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_sceneData.period) and _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
/* Verificar nas missions principais */
<<set _foundReq to false>>
<<if def $missions>>
<<for _mainMissionKey, _mainMissionData range $missions>>
<<if _mainMissionData.passage is _req.id and _mainMissionData.status is 1>>
<<set _foundReq to true>>
<<break>>
<</if>>
<</for>>
<</if>>
/* Verificar nas missions dos randomEncounters se não encontrou */
<<if !_foundReq and def $randomEncounters>>
<<for _randomCharKey, _randomCharData range $randomEncounters>>
<<if _randomCharData.missions>>
<<for _randomMissionKey, _randomMissionData range _randomCharData.missions>>
<<if _randomMissionData.passage is _req.id and _randomMissionData.status is 1>>
<<set _foundReq to true>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _foundReq>> <<break>> <</if>>
<</for>>
<</if>>
<<if _foundReq>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<set _foundHere to true>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The female locker room is empty right now.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
[[Take Shower|ShowerFemaleLockerRoom]]
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Return to Gym->Gym]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _showerPhrases to ["The steam fills the air as you rinse off, glimpses of curves through the mist.", "Water cascades, revealing subtle forms in the shared space.", "You relax under the spray, eyes wandering to elegant silhouettes nearby.", "The shower revives you, with hints of intimate moments unfolding.", "Soothing warmth envelops, accompanied by soft sounds of others freshening up.", "Rinsing away the sweat, you catch fleeting views of graceful figures.", "The flow of water brings clarity, amid the allure of nearby bathers.", "You unwind, senses heightened by the steamy environment.", "Cleansing ritual, interrupted by intriguing shadows in the fog.", "Refreshing cleanse, with whispers of sensuality in the air.", "The heat builds, mirroring the subtle tension around you.", "Water beads on skin, highlighting natural beauty in the haze.", "A moment of solitude, shared with enticing presences.", "Steam swirls, unveiling tender scenes in the distance.", "You emerge refreshed, memories of the steamy encounter lingering."]>>
<<set _randomPhrase to _showerPhrases[random(0, _showerPhrases.length - 1)]>>
<div class="dialog-text player">
You step into the shower in the female locker room. <<print _randomPhrase>> Quite the refreshing break!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _randomWebpNum to random(1, 15)>>
<<set _webpPath to "img/layout/city/gym/shower_female_locker_room/shower_" + _randomWebpNum + ".webp">>
<<print '<img src="' + _webpPath + '" alt="Random shower WEBP">'>>
</div>
</div>
<div class="menu-buttons">
[[Return to Female Locker Room->FemaleLockerRoom]]
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
The bathroom in the Gilded Lily is dimly lit and a bit grimy, with stalls and the faint smell of stale beer.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/city/bar_dive/bar_dive_bathroom.jpg" alt="Dive bar bathroom interior">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "BathroomGildedLily">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<if def $openWorldGirls>><<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>><</if>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<if def $openWorldGirls>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
/* LÓGICA PARA RANDOM ENCOUNTERS (INTEGRADA E CORRIGIDA) */
<<if def $randomEncounters>>
<<for _charKey, _charData range $randomEncounters>>
<<if !$peoplePresent[_charKey]>> /* Garante que não sobreponha um personagem principal */
<<for _missionKey, _missionData range _charData.missions>>
<<if _missionData.location is $locationName and _missionData.status is 0 and Array.isArray(_missionData.day) and _missionData.day.includes($actualDay)>>
<<set _periodMatch to false>>
<<if typeof _missionData.period is "string" and _missionData.period is _currentPeriodName>> <<set _periodMatch to true>> <</if>>
<<if Array.isArray(_missionData.period) and _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<if _periodMatch>>
<<set _reqMet to false>>
/* Verificação de requisitos completa para random encounters */
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set $peoplePresent[_charKey] to { type: "random", data: _charData }>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes(_currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _reqMet to false>>
<<if _event.requirements.type is "none">> <<set _reqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The bathroom is empty right now.</p>
<</if>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div class="interaction-list">
<h3>Available Interactions</h3>
<div class="interaction-options">
[[Glory Hole|GloryHoleGildedLily]]
</div>
</div>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Return to Bar->BarGildedLily]]
</div>
</div><div class="game-container">
<<if $player.money >= 50>>
<<set $player.money -= 50>>
<<set _statChanges to ["-50 Money"]>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<<set _gloryPhrases to ["You slide the money through, and warm lips envelop you in ecstasy.", "Anticipation builds as skilled attention brings waves of pleasure.", "The anonymous encounter heightens every sensation, leading to bliss.", "Soft moans echo, matching the rhythmic pull that drives you wild.", "Hidden behind the wall, expert technique leaves you breathless.", "The thrill of the unknown intensifies the intimate service.", "You lose yourself in the moment, surrendering to the expert touch.", "Pleasure surges as the mysterious mouth works its magic.", "Every movement builds tension, culminating in sweet release.", "The barrier adds excitement to the passionate exchange.", "Warmth and suction create an unforgettable high.", "You grip the wall, lost in the anonymous delight.", "Sensations overwhelm as the encounter reaches its peak.", "The hidden partner delivers pure satisfaction.", "Ecstasy flows through the divide, leaving you spent."]>>
<<set _randomPhrase to _gloryPhrases[random(0, _gloryPhrases.length - 1)]>>
<div class="dialog-text player">
You pay 50 for a glory hole blowjob. <<print _randomPhrase>> What an experience!
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _randomWebpNum to random(1, 15)>>
<<set _webpPath to "img/layout/city/bar_dive/glory_hole/glory_hole_" + _randomWebpNum + ".webp">>
<<print '<img src="' + _webpPath + '" alt="Random glory hole WEBP">'>>
</div>
</div>
<div class="stat-changes-container">
<<for _change range _statChanges>>
<p><<print _change>></p>
<</for>>
</div>
<<else>>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
You don't have enough money (need 50) for the glory hole.
</div>
</div>
<</if>>
<div class="menu-buttons">
[[Return to Bathroom->BathroomGildedLily]]
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Event: Brandi's Garden Statue Accident
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/garden.jpg" alt="Brandi's Luxurious Garden">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You've been called over to Brandi's garden to help with some light cleaning – she mentioned something about "maintaining standards" while her regular staff is away. As you carefully rake the leaves near her prized statues, your foot catches on a loose stone. With a horrifying crash, one of her expensive imported statues topples over and shatters on the ground. Brandi comes rushing out, her eyes wide with shock.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
What on earth have you done?! That was my priceless Venetian marble statue! It was worth more than your entire existence! How could you be so clumsy?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Oh no, I'm so sorry! It was an accident – I tripped on that stone. I didn't mean to break it!
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
An accident? Do you have any idea how much that cost? My husband brought it back from Italy himself! You're going to pay for this – every single penny. And don't think you can just walk away!
</div>
</div>
<!-- Imagem da estátua quebrada -->
<div class="environment-container">
<div class="environment-image">
<img src="img/etc/others/broken_statue.jpg" alt="Broken Statue in Brandi's Garden">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
The statue lies in pieces on the manicured lawn, its elegant form reduced to rubble. Brandi's face twists in horror and fury as she surveys the damage.
</p>
</div>
<!-- Imagem full da Brandi surpresa (após a estátua quebrada, como pedido) -->
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/brandi/face/brandi_surprise_face.jpg" alt="Brandi Surprised">
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I... I don't know what to say. How can I make this right? I'll do whatever it takes to fix this.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Oh, you will. Starting now, you're my personal errand boy until you've worked off every cent of that statue. And believe me, it won't be easy. Now get out of my sight before I call the authorities!
</div>
</div>
<p class="mission-narrative-focus" style="margin-top:20px; text-align:center;">
You've accidentally broken Brandi's expensive statue, putting you in her debt. This could lead to some... interesting opportunities to make amends.
</p>
<<silently>>
<<set $missions.BM001.status to 1>>
<<set $openWorldGirls.brandi.love -= 10>>
<</silently>>
<div class="menu-buttons" style="text-align:center; margin-top:20px;">
[[Return to Brandi's Garden->GardenBrandi]]
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Work off Debt: Pool Boy
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/pool.jpg" alt="Brandi's Luxurious Pool">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You arrive at Brandi's pool as instructed, ready to work off some of that statue debt. She's already there, stretching in a tight blue yoga outfit that hugs her curves perfectly – a short top and even shorter shorts that leave little to the imagination. The sun glistens off the water as she moves gracefully into poses, her body flexing in ways that make it hard to focus on the task at hand.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
About time you showed up. The pool needs cleaning – skim the leaves, scrub the edges, and don't miss a spot. I'll be right here doing my yoga routine. Try not to stare too much; it's unbecoming.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Got it. I'll get right on it. Just point me to the tools.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
The net and brush are over there. Different debris needs different effort – some you can skim lightly, others need a good scrub. Mess up, and you'll start over. Now get to work while I... stretch.
</div>
</div>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="pool-cleaning-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
<!-- ===== Carrossel HTML (Usando a base existente) ===== -->
<div id="carousel" class="carousel">
<img src="img/chars/brandi/yoga/yoga_pool_1.jpg" class="carousel-img active" alt="Brandi Yoga Pose 1">
<img src="img/chars/brandi/yoga/yoga_pool_2.jpg" class="carousel-img" alt="Brandi Yoga Pose 2">
<img src="img/chars/brandi/yoga/yoga_pool_3.jpg" class="carousel-img" alt="Brandi Yoga Pose 3">
<img src="img/chars/brandi/yoga/yoga_pool_4.jpg" class="carousel-img" alt="Brandi Yoga Pose 4">
<img src="img/chars/brandi/yoga/yoga_pool_5.jpg" class="carousel-img" alt="Brandi Yoga Pose 5">
<img src="img/chars/brandi/yoga/yoga_pool_6.jpg" class="carousel-img" alt="Brandi Yoga Pose 6">
<img src="img/chars/brandi/yoga/yoga_pool_7.jpg" class="carousel-img" alt="Brandi Yoga Pose 7">
<img src="img/chars/brandi/yoga/yoga_pool_8.jpg" class="carousel-img" alt="Brandi Yoga Pose 8">
<img src="img/chars/brandi/yoga/yoga_pool_9.jpg" class="carousel-img" alt="Brandi Yoga Pose 9">
<img src="img/chars/brandi/yoga/yoga_pool_10.jpg" class="carousel-img" alt="Brandi Yoga Pose 10">
</div>
<!-- Controles do Carrossel (Opcional, mas incluídos para manual se quiser) -->
<div class="carousel-controls">
<<link "◀ Previous">>
<<run window.carouselPrevious()>>
<</link>>
<<link "Next ▶">>
<<run window.carouselNext()>>
<</link>>
</div>
<!-- ===== Fim do Carrossel HTML ===== -->
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Work off Debt: Car Wash
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/brandi_house/garden.jpg" alt="Brandi's Luxurious Garage">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You head to Brandi's garage early in the morning, tools in hand, to wash her pristine luxury car as part of paying off your debt. She's there, stepping out of the driver's seat with the door open, dressed in a sleek outfit that shows off her figure. She eyes you impatiently, clearly not thrilled about supervising.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Finally. My car is filthy from that drive yesterday – bird droppings, mud, the works. Wash it properly: different messes need different tools. Use the wrong one, and you'll scratch the paint. I'll be watching... from a safe distance.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Understood. I'll make it shine. Where are the supplies?
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Over there – hose, sponge, brush, cloth. Pay attention to what each spot needs. Screw up, and you start over. Now hop to it while I... relax.
</div>
</div>
<!-- Imagem da Brandi sentada no carro com a porta aberta -->
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/brandi/car/brandi_car_seat.jpg" alt="Brandi Exiting Car">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Brandi lounges against the car door, watching you with a smirk as you prepare to tackle the grime.
</p>
</div>
<!-- Container principal para o minigame -->
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="car-wash-content">
<!-- Conteúdo será carregado via JavaScript quando o DOM estiver pronto -->
</div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: An Inside Job
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/brandi/dressed/brandi_dresses_living_room.jpg" alt="Brandi Living Room">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
As part of your growing debt, Brandi orders you to dust her living room. The space is immaculate—glass, velvet, and polished wood—just waiting to trap you with the wrong choice.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Good. Since you like being useful, you can start here. Different surfaces, different tools. If you scratch anything, we start over—and you owe me more time.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Got it. Cloth for glass, duster for shelves, vacuum for fabric. I’ll be careful.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Then prove it. Don’t make me breathe dust. I have a reputation to maintain.
</div>
</div>
<div class="game-challenge" style="background-color: rgba(41,41,41,0.8); border-radius: 8px; padding: 20px; margin-top: 20px;">
<div id="dusting-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: The First Piece of Leverage
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/brandi/dressed/brandi_reading_magazine.jpg" alt="Brandi Reading Magazine">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
You find Brandi lounging in her living room, flipping through a glossy magazine like the world answers to her schedule. Today, it doesn’t. You’ve heard enough to turn the tide—and you’re done playing servant.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Enough errands. We’re going to talk—about your situation. I know more than you think.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Cute. You finally found a backbone. You think you can leverage me in my own home? Try it—carefully.
</div>
</div>
<div class="game-challenge leverage-zone">
<div id="leverage-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: A Test of Discretion
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/brandi/dressed/brandi_open_bag.jpg" alt="Brandi Handing a Letter">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Evening air settles over the garden. Brandi opens her handbag and produces a sealed letter with an embossed crest. She doesn’t explain—she doesn’t need to. This is not a favor. It’s a test.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Get rid of this—quietly. No splashy mistakes. Your methods are your problem; my name stays clean. Impress me... or remind me why people need leverage.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Understood. No trail, no noise. You won’t hear about it again—unless you want a receipt.
</div>
</div>
<div class="game-challenge discretion-zone">
<div id="discretion-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Find the Lady's Key
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/brandi/tease/brandi_nightwear.jpg" alt="Brandi in Nightwear, Worried">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Panic frays the edges of Brandi’s usual composure. Somewhere in this room, a tiny key slipped away—locking something she cannot afford to leave sealed. She fixes you with a tense look that says more than she’ll admit aloud.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/brandi/face/brandi_face.jpg" alt="Brandi Face">
</div>
<div class="dialog-text brandi">
Don’t stand there—find it. It’s a small gold key. I dropped it and now it’s… gone. The sooner you find it, the better for both of us. You have a few tries before I lose my patience.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I’ll sweep the room. Give me a minute—and try not to hover.
</div>
</div>
<div class="game-challenge keyhunt-zone">
<div id="keyhunt-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Help with Valerie's Garden
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/valerie/dressed/valerie_at_garden.jpg" alt="Valerie at the Garden">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Morning light warms the herbs and wildflowers. Valerie lounges on a wicker chair, sun-kissed and smiling as she eyes the overgrown beds. “The garden’s a little chaotic today,” she says, “but chaos is just a dance waiting for rhythm.”
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/valerie/face/valerie_face.jpg" alt="Valerie Face">
</div>
<div class="dialog-text brandi">
Help me guide the energy back into balance. A little weeding, a little watering… listen to what the plants ask for.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Got it. I’ll tune in and get these beds looking alive again.
</div>
</div>
<div class="game-challenge gardenhelp-zone">
<div id="gardenhelp-content"></div>
</div>
</div><div class="game-container">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Valerie's garden feels less like a planned space and more like a beautiful, chaotic slice of nature. Wildflowers mix with herbs, and there's a constant, gentle hum of bees.
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/valerie_house/garden.jpg" alt="Valerie's wild and beautiful garden">
</div>
</div>
<<silently>>
<<set $peoplePresent to {}>>
<<set $locationName to "GardenValerie">>
<<set _availableEventsArray to []>>
<<set _priorityCharacters to []>>
<<set _busyElsewhere to []>>
<<set _allCharacters to ["auntCarol", "neighborAngela", "storeSkylar"]>>
<<for _girlKey range Object.keys($openWorldGirls)>>
<<run _allCharacters.push(_girlKey)>>
<</for>>
<<set _currentPeriodName to "">>
<<if $time >= 6 and $time <= 10>> <<set _currentPeriodName to "morning">>
<<elseif $time >= 11 and $time <= 13>> <<set _currentPeriodName to "noon">>
<<elseif $time >= 14 and $time <= 17>> <<set _currentPeriodName to "afternoon">>
<<elseif $time >= 18 and $time <= 21>> <<set _currentPeriodName to "evening">>
<<else>> <<set _currentPeriodName to "night">>
<</if>>
<<for _charKey range _allCharacters>>
<<set _hasPriorityHere to false>>
<<set _isBusy to false>>
<<if def $missions>>
<<for _missionId, _missionData range $missions>>
<<if _missionData.character is _charKey and _missionData.status is 0>>
<<set _reqMet to false>>
<<set _req to _missionData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "event">>
<<if $events[_req.id] and $events[_req.id].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "item">>
<<if $player.inventory.includes(_req.item)>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "keyEvent">>
<<if $keyEvents[_req.id]>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "stats">>
<<set _reqMet to true>>
<<for _stat, _value range _req>>
<<if _stat isnot "type" and (!$player[_stat] or $player[_stat] < _value)>>
<<set _reqMet to false>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_missionData.day)>>
<<if _missionData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _missionData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_missionData.period)>>
<<if _missionData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _missionData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _missionData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if !_hasPriorityHere and !_isBusy and def $scenes>>
<<for _sceneId, _sceneData range $scenes>>
<<if _sceneData.character is _charKey and _sceneData.status is 0>>
<<set _reqMet to false>>
<<set _req to _sceneData.requirements>>
<<if _req.type is "none">> <<set _reqMet to true>>
<<elseif _req.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _req.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<<elseif _req.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _req.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _reqMet to true>> <</if>>
<</if>>
<<if _reqMet>>
<<set _dayMatch to false>>
<<set _periodMatch to false>>
<<if Array.isArray(_sceneData.day)>>
<<if _sceneData.day.includes($actualDay)>> <<set _dayMatch to true>> <</if>>
<<elseif _sceneData.day is $actualDay>>
<<set _dayMatch to true>>
<</if>>
<<if Array.isArray(_sceneData.period)>>
<<if _sceneData.period.includes(_currentPeriodName)>> <<set _periodMatch to true>> <</if>>
<<elseif _sceneData.period is _currentPeriodName>>
<<set _periodMatch to true>>
<</if>>
<<if _dayMatch and _periodMatch>>
<<if _sceneData.location is $locationName>>
<<set _hasPriorityHere to true>>
<<else>>
<<set _isBusy to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _hasPriorityHere or _isBusy>> <<break>> <</if>>
<</for>>
<</if>>
<<if _hasPriorityHere>>
<<run _priorityCharacters.push(_charKey)>>
<<elseif _isBusy>>
<<run _busyElsewhere.push(_charKey)>>
<</if>>
<</for>>
<<for _char range _priorityCharacters>>
<<if $openWorldGirls[_char]>> <<set $peoplePresent[_char] to { type: "main", data: $openWorldGirls[_char] }>>
<<elseif _char is "auntCarol">> <<set $peoplePresent[_char] to { type: "main", data: $auntCarol }>>
<<elseif _char is "neighborAngela">> <<set $peoplePresent[_char] to { type: "main", data: $neighborAngela }>>
<<elseif _char is "storeSkylar">> <<set $peoplePresent[_char] to { type: "main", data: $storeSkylar }>>
<</if>>
<</for>>
<<for _girlKey, _girlData range $openWorldGirls>>
<<if !$peoplePresent[_girlKey] and !_busyElsewhere.includes(_girlKey)>>
<<if _girlData.weeklySchedule[$actualDay] and _girlData.weeklySchedule[$actualDay][$locationName]>>
<<set _schedule to _girlData.weeklySchedule[$actualDay][$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent[_girlKey] to { type: "main", data: _girlData }>>
<</if>>
<</if>>
<</if>>
<</for>>
<<if def $auntCarol and !$peoplePresent.auntCarol and !_busyElsewhere.includes("auntCarol")>>
<<if $auntCarol.locationSchedule and $auntCarol.locationSchedule[$locationName]>>
<<set _schedule to $auntCarol.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.auntCarol to { type: "main", data: $auntCarol }>>
<</if>>
<</if>>
<</if>>
<<if def $neighborAngela and !$peoplePresent.neighborAngela and !_busyElsewhere.includes("neighborAngela")>>
<<if $neighborAngela.locationSchedule and $neighborAngela.locationSchedule[$locationName]>>
<<set _schedule to $neighborAngela.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.neighborAngela to { type: "main", data: $neighborAngela }>>
<</if>>
<</if>>
<</if>>
<<if def $storeSkylar and !$peoplePresent.storeSkylar and !_busyElsewhere.includes("storeSkylar")>>
<<if $storeSkylar.locationSchedule and $storeSkylar.locationSchedule[$locationName]>>
<<set _schedule to $storeSkylar.locationSchedule[$locationName]>>
<<if ($time >= _schedule.start and $time <= _schedule.end) or ($time >= _schedule.start and _schedule.end < _schedule.start) or ($time <= _schedule.end and _schedule.end < _schedule.start)>>
<<set $peoplePresent.storeSkylar to { type: "main", data: $storeSkylar }>>
<</if>>
<</if>>
<</if>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is _currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">>
<<set _requiredKey to Object.keys($missions).find(key => $missions[key].passage === _event.requirements.id)>>
<<if _requiredKey and $missions[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<<elseif _event.requirements.type is "scene">>
<<set _requiredKey to Object.keys($scenes).find(key => $scenes[key].passage === _event.requirements.id)>>
<<if _requiredKey and $scenes[_requiredKey].status === 1>> <<set _eventReqMet to true>> <</if>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if Object.keys($peoplePresent).length > 0>>
<div class="location-characters-container">
<h3>Who's Here?</h3>
<div class="character-avatar-list">
<<for _charKey, _charInfo range $peoplePresent>>
<div class="character-avatar" @data-char-key="_charKey">
<img @src="_charInfo.data.face" @alt="_charInfo.data.name">
<div class="character-name-plate"><<print _charInfo.data.name>></div>
</div>
<</for>>
</div>
</div>
<<else>>
<p class="mission-narrative-focus">The garden is quiet and empty, just the sounds of nature.</p>
<</if>>
<<silently>>
<<set _availableEventsArray to []>>
<<if def $events>>
<<for _eventId, _event range $events>>
<<if _event.location is $locationName and _event.status is 0 and (_event.day is $actualDay or (Array.isArray(_event.day) and _event.day.includes($actualDay)))>>
<<set _eventPeriodMatch to false>>
<<if typeof _event.period is "string">>
<<if _event.period is $currentPeriodName>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif Array.isArray(_event.period)>>
<<if _event.period.includes($currentPeriodName)>> <<set _eventPeriodMatch to true>> <</if>>
<<elseif typeof _event.period is 'undefined' or _event.period is null>>
<<set _eventPeriodMatch to true>>
<</if>>
<<if _eventPeriodMatch>>
<<set _eventReqMet to false>>
<<if _event.requirements.type is "none">> <<set _eventReqMet to true>>
<<elseif _event.requirements.type is "mission">> <<set _eventReqMet to State.hasPlayed(_event.requirements.id)>>
<<elseif _event.requirements.type is "scene">> <<set _eventReqMet to State.hasPlayed(_event.requirements.id)>>
<</if>>
<<if _eventReqMet>>
<<run _availableEventsArray.push({name: _event.name, passage: _event.passage})>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
<</silently>>
<<if _availableEventsArray.length > 0>>
<div class="event-list-container">
<h3>! Special Events !</h3>
<<for _i, _eventData range _availableEventsArray>>
<<link _eventData.name _eventData.passage class="event-link">>
<</link>>
<</for>>
</div>
<</if>>
<div id="interaction-panel" style="display: none;">
<div id="panel-content"></div>
</div>
<div class="menu-buttons">
[[Leave Garden->ValerieHouse]]
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Move Valerie's Canvas
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/valerie/dressed/valerie_at_sofa.jpg" alt="Valerie at the Sofa">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Valerie pats the space beside a massive canvas propped against the wall. “It wants sunlight in the living room,” she grins, stretching like a cat. “Strong hands, gentle soul. Think you can carry both?”
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/valerie/face/valerie_face.jpg" alt="Valerie Face">
</div>
<div class="dialog-text brandi">
Slow breaths, grounded feet. It’s a dance with gravity—feel for the balance point and tap when it’s right.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I’ll keep it steady. Just tell me where you want it.
</div>
</div>
<div class="game-challenge canvasmove-zone">
<div id="canvasmove-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Retrieve a Lost Crystal
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/valerie/dressed/valerie_at_pool.jpg" alt="Valerie by the Pool">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
By the pool’s edge, Valerie’s fingers worry at a beaded bracelet. Somewhere in the water—or nearby—the small quartz point she calls her anchor slipped away. The sunlight dances; the crystal does not. She meets your eyes with a hopeful, vulnerable smile.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/valerie/face/valerie_face.jpg" alt="Valerie Face">
</div>
<div class="dialog-text brandi">
It hums when you’re close, like a little heartbeat. Send out a ripple, listen, then dive when it calls to you. I believe you’ll feel it.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
I’ll read the water and track the pulse. Give me a moment—then I’ll bring it back.
</div>
</div>
<div class="game-challenge crystalhunt-zone">
<div id="crystalhunt-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Cleansing the Space
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/valerie/cleaning/valerie_living_room_1.jpg" alt="Valerie starting to clean the living room">
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Valerie calls you for a different kind of favor: cleanse the house — physically and energetically. Incense, soft music, and a shared task that feels strangely intimate.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/valerie/face/valerie_face.jpg" alt="Valerie Face">
</div>
<div class="dialog-text valerie">
We’ll do this together. Living room first — dust, sweep, wipe — then the kitchen. After, a small ritual… and maybe a thank-you hug. Stay close, I’ll guide you.
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
Lead and I’ll follow. Just say what you need.
</div>
</div>
<div class="game-challenge vclean-challenge">
<div id="valerie-cleansing-content"></div>
<div id="carousel" class="carousel" style="margin-top:16px;">
<img src="img/chars/valerie/cleaning/valerie_living_room_1.jpg" class="carousel-img active" alt="Valerie Living 1">
<img src="img/chars/valerie/cleaning/valerie_living_room_2.jpg" class="carousel-img" alt="Valerie Living 2">
<img src="img/chars/valerie/cleaning/valerie_living_room_3.jpg" class="carousel-img" alt="Valerie Living 3">
<img src="img/chars/valerie/cleaning/valerie_living_room_4.jpg" class="carousel-img" alt="Valerie Living 4">
<img src="img/chars/valerie/cleaning/valerie_kitchen_1.jpg" class="carousel-img" alt="Valerie Kitchen 1">
<img src="img/chars/valerie/cleaning/valerie_kitchen_2.jpg" class="carousel-img" alt="Valerie Kitchen 2">
<img src="img/chars/valerie/cleaning/valerie_kitchen_3.jpg" class="carousel-img" alt="Valerie Kitchen 3">
<img src="img/chars/valerie/cleaning/valerie_kitchen_4.jpg" class="carousel-img" alt="Valerie Kitchen 4">
<img src="img/chars/valerie/cleaning/valerie_kitchen_5.jpg" class="carousel-img" alt="Valerie Kitchen 5">
<img src="img/chars/valerie/cleaning/valerie_hug_1.jpg" class="carousel-img" alt="Valerie Hug 1">
<img src="img/chars/valerie/cleaning/valerie_hug_2.jpg" class="carousel-img" alt="Valerie Hug 2">
<img src="img/chars/valerie/cleaning/valerie_hug_3.jpg" class="carousel-img" alt="Valerie Hug 3">
</div>
<div class="carousel-controls">
<<link "◀ Previous">>
<<run window.carouselPrevious()>>
<</link>>
<<link "Next ▶">>
<<run window.carouselNext()>>
<</link>>
</div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: A Favor for Kenzie
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/kenzie/tease/kenzie_refrigerator.jpg" alt="Kenzie, in panties, raiding the fridge" />
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
The kitchen is quiet. No incense. No Valerie. Just Kenzie, in her underwear, glaring into a fridge full of greens and guilt.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/kenzie/face/kenzie_face.jpg" alt="Kenzie Face" />
</div>
<div class="dialog-text kenzie">
"Seriously, look at this. Tofu. Sprouts. Kale juice. I’m going to wither."
She turns to you, lowering her voice. "You seem cool. And I’m desperate for real food. Will you do me a huge favor? Order me a pizza. With everything. Pepperoni, extra cheese... the opposite of this fridge."
She glances around. "But we have to be fast and discreet. My mom can’t even suspect it."
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face" />
</div>
<div class="dialog-text player">
"Show me the app. Let’s do it right."
</div>
</div>
<div class="game-challenge kpizza-challenge">
<div id="kpizza-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Keep Kenzie's Secret
</p>
<div class="environment-container">
<div class="environment-image">
<img id="kenzie-bar-img" src="img/chars/kenzie/bar/kenzie_bar_1.jpg" alt="Kenzie at the pool table" />
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
The Rusty Mug hums with low music and clacking billiard balls. Kenzie’s here, dressed to start trouble and pretending to belong.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/kenzie/face/kenzie_face.jpg" alt="Kenzie Face" />
</div>
<div class="dialog-text kenzie">
She leans in, voice barely above the bass. "If anyone asks, I’m your plus-one. Don’t rat me out."
</div>
</div>
<div class="game-challenge kbar-challenge">
<div id="kbar-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Fix Jenna's Bike
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/etc/others/broken_bike.jpg" alt="Broken bike pedal" />
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
The garden is quiet, just wind and the tick of a chain against metal. Jenna stands over a bike with a loose pedal, brows knit — stubbornly trying to fix it alone.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/jenna/face/jenna_face.jpg" alt="Jenna Face" />
</div>
<div class="dialog-text jenna">
"It keeps slipping. I know it’s dumb… I just hate asking for help." She exhales, half embarrassed, half relieved. "If you know what you’re doing… I’d appreciate it."
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face" />
</div>
<div class="dialog-text player">
"Let me take a look. Easy fix if we follow the right steps."
</div>
</div>
<div class="game-challenge jbike-challenge">
<div id="jbike-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Help Tidy Jenna's Garden
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/jenna/tease/jenna_at_garden.jpg" alt="Jenna watering plants with a hose" />
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
Sun-warm air. The hose hisses. Jenna’s denim clings as she waters the beds, a smile flickering when you show up with sleeves rolled.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/jenna/face/jenna_face.jpg" alt="Jenna Face" />
</div>
<div class="dialog-text jenna">
"I could use a strong pair of hands. Just some weeding, hauling a soil bag, moving a planter. Nothing you can’t handle… right?"
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face" />
</div>
<div class="dialog-text player">
"Point me at the problems. I’ll make them lighter."
</div>
</div>
<div class="game-challenge jgarden-challenge">
<div id="jgarden-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Post-Workout Shake
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/jenna/tease/jenna_kitchen_egg.jpg" alt="Jenna in the kitchen holding eggs and peanut butter" />
</div>
<p class="mission-narrative-focus" style="margin-top:10px;">
The kitchen smells like vanilla protein and sunlight. Jenna leans on the counter, a playful challenge in her eyes — and a jar of peanut butter in her hand.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/jenna/face/jenna_face.jpg" alt="Jenna Face" />
</div>
<div class="dialog-text jenna">
"I make this after every workout. Want to try it my way? It’s simple… if you pay attention."
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face" />
</div>
<div class="dialog-text player">
"Give me the order. I’ll do it right."
</div>
</div>
<div class="game-challenge jshake-challenge">
<div id="jshake-content"></div>
</div>
</div><div class="game-container mission-task-container">
<p class="mission-objective-text">
Mission: Fix a Stuck Window
</p>
<div class="environment-container">
<p class="mission-narrative-focus" style="margin-top:10px;">
The ask feels closer than usual — personal, a little vulnerable. She hesitates, then meets your eyes.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/jenna/face/jenna_face.jpg" alt="Jenna Face" />
</div>
<div class="dialog-text jenna">
"I have a slightly awkward favor. My bedroom window is stuck. With the heat, it gets so stuffy at night. Could you... take a look? You were so good with the bike, I thought..."
</div>
</div>
<div class="environment-container" style="margin-top:10px;">
<p class="mission-narrative-focus">
You step into her room. It’s immaculate — lavender in the air, smooth sheets, everything softly feminine and carefully kept. You walk to the window; the frame looks swollen from the heat.
</p>
<p class="mission-narrative-focus" style="text-align:center; margin-top:8px;">
<a href="javascript:void(0)" class="link-invoke" onclick="window.jwindowStart({content: document})">Try to open the stuck window.</a>
</p>
</div>
<div class="game-challenge jwindow-challenge">
<div id="jwindow-content"></div>
</div>
</div><div class="game-container mission-task-container cmunpack-container">
<p class="mission-objective-text">
Mission: Unpack for the Month
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/tease/alexa_underboob_2.jpg" alt="Carol leaning forward, trying to help, visibly flustered" />
</div>
<p class="mission-narrative-focus cmunpack-narrative" style="margin-top:10px;">
Your suitcase sits half-zipped on the bed. Clothes, chargers, a book you never finished. Carol hovers nearby — picking up a shirt, folding it, then unfolding it again. Her hands won’t settle. Neither will her eyes.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol cmunpack-dialog">
"I’ll help… if you want. I’m just— I don’t know where to put anything. Do you want the bottom drawer or… the closet? Sorry, I’m overthinking this."
</div>
</div>
<div class="game-challenge cmunpack-challenge">
<div id="cmunpack-content"></div>
</div>
</div><div class="game-container mission-task-container cmlist-container">
<p class="mission-objective-text">
Mission: Get the Shopping List
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/tease/carol_kitchen_looking.png" alt="Carol at the kitchen counter, keeping busy" />
</div>
<p class="mission-narrative-focus cmlist-narrative" style="margin-top:10px;">
The kitchen is spotless. Carol leans into a counter that doesn’t need cleaning, shoulders tight, eyes anywhere but yours.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol cmlist-dialog">
"Oh— there you are. Since you’re staying, could you help with the weekly groceries? The list… I wrote it down somewhere. I think I left it in the living room, near my romance books." She avoids eye contact, forcing a small smile. "Would you mind grabbing it?"
</div>
</div>
<div class="game-challenge cmlist-challenge">
<div id="cmlist-content"></div>
</div>
</div><div class="game-container mission-task-container cgstore-container">
<p class="mission-objective-text">
Mission: The Weekly Grocery Run
</p>
<div class="dialog-container" style="margin-bottom:10px;">
<div class="dialog-image">
<img src="img/chars/skylar/face/skylar_normal_face.jpg" alt="Skylar Face" />
</div>
<div class="dialog-text skylar cgstore-dialog">
"Well, look who’s back. Thought you’d skipped town. What brings you in? Let me guess… errands for Aunt Carol?"
</div>
</div>
<div class="game-challenge cgstore-challenge">
<div id="cgstore-content"></div>
</div>
</div><div class="game-container mission-task-container cfaucet-container">
<p class="mission-objective-text">
Mission: Fix the Leaky Faucet
</p>
<div class="environment-container">
<div class="environment-video">
<video class="cfaucet-video" src="img/chars/carol/talking/carol_talking_frustrated.mp4" autoplay muted loop playsinline></video>
</div>
<p class="mission-narrative-focus cfaucet-narrative" style="margin-top:10px;">
You hear it in the hall — ploc… ploc… ploc. In the bathroom, Carol stares at the sink like it personally wronged her.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol cfaucet-dialog">
"This drip is driving me insane. I tried tightening with my hand, but nothing. And the sound… it’s echoing in my head."
</div>
</div>
<div class="game-challenge cfaucet-challenge">
<div id="cfaucet-content"></div>
</div>
</div><div class="game-container mission-task-container cmovie-container">
<p class="mission-objective-text">
Mission: Movie Night Choice
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/tease/carol_at_chair.jpg" alt="Carol sitting in a chair, casual shirt, no bra, pretending not to notice" />
</div>
<p class="mission-narrative-focus cmovie-narrative" style="margin-top:10px;">
Living room lights are low. Carol sits in the chair, legs folded, eyes on the TV menu like it's a safety line. After what happened, quiet company is the compromise.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol cmovie-dialog">
"We could… watch something. Keep it simple." She clears her throat, then adds, softer, "You pick the genre."
</div>
</div>
<div class="game-challenge cmovie-challenge">
<div id="cmovie-content"></div>
</div>
</div><div class="game-container mission-task-container crose-container">
<p class="mission-objective-text">
Mission: Help Angela with her Roses
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/tease/alexa_angela_garden.jpg" alt="Carol relaxing in the garden, pink dress and sunglasses" />
</div>
<p class="mission-narrative-focus crose-narrative" style="margin-top:10px;">
Afternoon warmth, trimmed hedges, the faint scent of roses. Carol and Angela chat by the fence while you roll your sleeves up.
</p>
</div>
<div class="dialog-container" style="margin-bottom:8px;">
<div class="dialog-image">
<img src="img/chars/neighbor/tease/angela_at_garden.webp" alt="Angela in her garden, umbrella and tote" />
</div>
<div class="dialog-text angela crose-dialog">
"You’re a lifesaver. The weeds grow fast this week. Could you clear the bed around the roses? I’ll owe you one."
</div>
</div>
<div class="dialog-container" style="margin-bottom:10px;">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol crose-dialog">
"He’s good with his hands," Carol says, half-proud, half-playful. "You’ll have your roses breathing again in no time."
</div>
</div>
<div class="game-challenge crose-challenge">
<div id="crose-content"></div>
</div>
</div><div class="game-container mission-task-container cpool-container">
<p class="mission-objective-text">
Mission: Clean the Pool Together
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/naked/carol_naked_pool.jpg" alt="Carol in the pool, waiting" />
</div>
<p class="mission-narrative-focus cpool-narrative" style="margin-top:10px;">
The sun is high, the air thick with heat. Carol is already in the pool, the water distorting her form. She watches you approach, a challenge in her eyes.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol cpool-dialog">
"It won't clean itself," she says, her voice a low murmur. "Get in. Help me."
</div>
</div>
<div class="game-challenge cpool-challenge">
<div id="cpool-content"></div>
</div>
</div><div class="game-container mission-task-container ccook-container">
<p class="mission-objective-text">
Mission: Cooking Dinner Together
</p>
<div class="environment-container">
<div class="environment-video">
<video class="ccook-video" src="img/chars/carol/cooking/carol_cooking_mac_cheese.mp4" autoplay muted loop playsinline></video>
</div>
<p class="mission-narrative-focus ccook-narrative" style="margin-top:10px;">
The kitchen is warm, filled with the low hum of the stove. Carol is practically glowing, a genuine, unguarded smile on her face.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol ccook-dialog">
"I was thinking… mac and cheese. The good kind. From scratch. You in?"
</div>
</div>
<div class="game-challenge ccook-challenge">
<div id="ccook-content"></div>
</div>
</div><div class="game-container mission-task-container claundry-container">
<p class="mission-objective-text">
Mission: Laundry Day
</p>
<div class="environment-container">
<div class="environment-video">
<video class="claundry-video" src="img/chars/carol/tease/carol_tease_w_tits.mp4" autoplay muted loop playsinline></video>
</div>
<p class="mission-narrative-focus claundry-narrative" style="margin-top:10px;">
The hum of the house is the only sound in the laundry room. Sunlight streams through the small window, catching dust motes dancing in the air. Carol leans against the machine, a laundry basket at her feet, a new, comfortable silence between you.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol claundry-dialog">
"Morning," she says, her voice a low purr. "Since we're… comfortable now… think you can help me with this? Just don't mix the colors."
</div>
</div>
<div class="game-challenge claundry-challenge">
<div id="claundry-content"></div>
</div>
</div><div class="game-container mission-task-container ccomp-container">
<p class="mission-objective-text">
Mission: Fix Carol's Slow Computer
</p>
<div class="environment-container">
<p class="mission-narrative-focus ccomp-narrative" style="margin-top:10px;">
The living room is quiet. Carol has gone to make coffee, leaving you with her laptop. It's warm on your lap, open to a cluttered desktop. She trusts you.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol ccomp-dialog">
"It's been so slow lately, I can barely open my emails," she'd said, handing it to you. "Work your magic?"
</div>
</div>
<div class="game-challenge ccomp-challenge">
<div id="ccomp-content"></div>
</div>
</div><div class="game-container mission-task-container ccocktail-container">
<p class="mission-objective-text">
Mission: Learn to Make Her Favorite Cocktail
</p>
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/etc/carol_drink_cocktail.jpg" alt="Carol enjoying the cocktail you made." />
</div>
<p class="mission-narrative-focus ccocktail-narrative" style="margin-top:10px;">
The evening light filters into the kitchen, soft and golden. The day is done, and a quiet, expectant energy hangs in the air between you.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol ccocktail-dialog">
"I'm in the mood for something special," she says, leaning against the counter. "My favorite, a 'Sunset Kiss'. Think you're up to the challenge, bartender?"
</div>
</div>
<div class="game-challenge ccocktail-challenge">
<div id="ccocktail-content"></div>
</div>
</div><div class="game-container mission-task-container cmassage-container">
<p class="mission-objective-text">
Mission: A Massage for a Tense Aunt
</p>
<div class="environment-container">
<p class="mission-narrative-focus cmassage-narrative" style="margin-top:10px;">
The lights are low in her bedroom, casting long shadows. The air is still and heavy with the scent of her perfume and the lingering memory of last night. She's lying face down on the bed, a sheet barely covering her.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face.webp" alt="Carol Face" />
</div>
<div class="dialog-text carol cmassage-dialog">
"I'm so… tense," she whispers into the pillow, her voice muffled. "After everything… I just need to unwind. Could you…?" She doesn't need to finish the sentence.
</div>
</div>
<div class="game-challenge cmassage-challenge">
<div id="cmassage-content"></div>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 6) + 1>>
<<silently>>
<<set $openWorldGirls.brandi.dailyInteractions.talk += 1>>
<<set $openWorldGirls.brandi.love += $openWorldGirls.brandi.interactions.talk.stats.love>>
<<set $openWorldGirls.brandi.lust += $openWorldGirls.brandi.interactions.talk.stats.lust>>
<<set $openWorldGirls.brandi.corruption += $openWorldGirls.brandi.interactions.talk.stats.corruption>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
brandi: "I was just about to do something important. What do you want?",
player: "Sorry to bother you, just wanted to say hi."
},
{
brandi: "Is there a point to you being here, or are you just... existing in my general vicinity?",
player: "Just enjoying the scenery, I guess."
},
{
brandi: "I have a thousand things on my mind. You wouldn't understand a single one.",
player: "You seem like you handle a lot. It's impressive."
},
{
brandi: "Oh, it's you again. My day was going so well.",
player: "Glad I could... add to it?"
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.brandi.face" alt="Brandi's Face">
</div>
<div class="dialog-text brandi">
<<= _randomDialogue.brandi >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/brandi/talk/brandi_talk_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Brandi regards you with a look of mild annoyance, barely pausing her current activity to acknowledge you.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 5) + 1>>
<<silently>>
<<set $openWorldGirls.brandi.dailyInteractions.flirt += 1>>
<<set $openWorldGirls.brandi.love += $openWorldGirls.brandi.interactions.flirt.stats.love>>
<<set $openWorldGirls.brandi.lust += $openWorldGirls.brandi.interactions.flirt.stats.lust>>
<<set $openWorldGirls.brandi.corruption += $openWorldGirls.brandi.interactions.flirt.stats.corruption>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
brandi: "Are you always this... persistent? It's almost cute. Almost.",
player: "Only for things that catch my eye."
},
{
brandi: "You have a certain... raw energy about you. It's so... unrefined. But not entirely unpleasant to look at.",
player: "I'll take that as a compliment."
},
{
brandi: "Don't get any ideas, boy. I eat little things like you for breakfast.",
player: "Breakfast is the most important meal of the day, isn't it?"
},
{
brandi: "You keep looking at me like that and you might just get what you're asking for. And you might not like it.",
player: "I'm willing to take that risk."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.brandi.face" alt="Brandi's Face">
</div>
<div class="dialog-text brandi">
<<= _randomDialogue.brandi >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/brandi/flirt/brandi_flirt_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
A flicker of interest crosses Brandi's face, quickly masked by her usual look of bored superiority. But her eyes linger on you a moment longer than necessary.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 3) + 1>>
<<silently>>
<<set $openWorldGirls.valerie.dailyInteractions.talk += 1>>
<<set $openWorldGirls.valerie.love += $openWorldGirls.valerie.interactions.talk.stats.love>>
<<set $openWorldGirls.valerie.lust += $openWorldGirls.valerie.interactions.talk.stats.lust>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
valerie: "I was just pondering the interconnectedness of all things. What's on your spirit's mind?",
player: "Mostly just what to have for lunch, to be honest."
},
{
valerie: "The energy in here feels a little different since you arrived. It's... brighter.",
player: "I'm glad I could bring some positive energy, then."
},
{
valerie: "Remember to take a deep breath. The universe is sending you exactly what you need in this moment.",
player: "Thanks, Valerie. I'll try to remember that."
},
{
valerie: "Hello there, fellow traveler. How is your journey today?",
player: "It's been an interesting trip so far."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.valerie.face" alt="Valerie's Face">
</div>
<div class="dialog-text valerie">
<<= _randomDialogue.valerie >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/valerie/talk/valerie_talk_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Valerie speaks with a calm, warm smile, her presence radiating a gentle and inviting energy.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 6) + 1>>
<<silently>>
<<set $openWorldGirls.valerie.dailyInteractions.flirt += 1>>
<<set $openWorldGirls.valerie.love += $openWorldGirls.valerie.interactions.flirt.stats.love>>
<<set $openWorldGirls.valerie.lust += $openWorldGirls.valerie.interactions.flirt.stats.lust>>
<<set $openWorldGirls.valerie.corruption += $openWorldGirls.valerie.interactions.flirt.stats.corruption>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
valerie: "You have such a strong, vibrant aura. It's very... compelling. I feel drawn to it.",
player: "I'm glad my... aura... is having a good effect."
},
{
valerie: "Sometimes, the universe brings two souls together for a reason. I wonder what our reason is...",
player: "I'm definitely interested in finding out."
},
{
valerie: "Physical touch is such an important way to exchange energy. A simple hug can realign everything...",
player: "Maybe we should... exchange some energy sometime."
},
{
valerie: "You have very kind eyes. But I can see a little bit of mischief hiding in there too. I like that.",
player: "It takes one to know one, I guess."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.valerie.face" alt="Valerie's Face">
</div>
<div class="dialog-text valerie">
<<= _randomDialogue.valerie >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/valerie/flirt/valerie_flirt_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Her voice drops a little, becoming softer, more intimate. She holds your gaze a moment longer, a playful and knowing smile gracing her lips.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 3) + 1>>
<<silently>>
<<set $openWorldGirls.kenzie.dailyInteractions.talk += 1>>
<<set $openWorldGirls.kenzie.love += $openWorldGirls.kenzie.interactions.talk.stats.love>>
<<set $openWorldGirls.kenzie.lust += $openWorldGirls.kenzie.interactions.talk.stats.lust>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
kenzie: "Ugh, what now? Can't you see I'm busy?",
player: "Busy doing what, exactly? Staring at your phone?"
},
{
kenzie: "If you're looking for my mom, she's probably meditating at a plant or something. Don't ask me, I'm not her keeper.",
player: "Actually, I was looking for you."
},
{
kenzie: "This house is so boring. I'm literally dying of boredom.",
player: "There are worse places to be bored, I guess."
},
{
kenzie: "Did you need something, or are you just enjoying the awkward silence?",
player: "The silence wasn't awkward until you mentioned it."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.kenzie.face" alt="Kenzie's Face">
</div>
<div class="dialog-text kenzie">
<<= _randomDialogue.kenzie >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/kenzie/talk/kenzie_talk_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Kenzie barely looks up from her phone, her expression a perfect mask of teenage apathy.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 6) + 1>>
<<silently>>
<<set $openWorldGirls.kenzie.dailyInteractions.flirt += 1>>
<<set $openWorldGirls.kenzie.love += $openWorldGirls.kenzie.interactions.flirt.stats.love>>
<<set $openWorldGirls.kenzie.lust += $openWorldGirls.kenzie.interactions.flirt.stats.lust>>
<<set $openWorldGirls.kenzie.corruption += $openWorldGirls.kenzie.interactions.flirt.stats.corruption>>
<<set $openWorldGirls.kenzie.rebellion += $openWorldGirls.kenzie.interactions.flirt.stats.rebellion>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
kenzie: "Are you always staring at people, or am I just special?",
player: "Let's just say you're hard to ignore."
},
{
kenzie: "My mom would probably have a fit if she knew the way you were looking at me.",
player: "Good thing she's off aligning her chakras then, huh?"
},
{
kenzie: "You're not as boring as I thought you'd be. Don't let it go to your head.",
player: "I'll try my best not to."
},
{
kenzie: "So... what's your deal, anyway? You just hang out with old people like my mom and your aunt?",
player: "Sometimes I branch out. Depends on who's around."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.kenzie.face" alt="Kenzie's Face">
</div>
<div class="dialog-text kenzie">
<<= _randomDialogue.kenzie >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/kenzie/flirt/kenzie_flirt_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
She smirks, a flicker of genuine interest in her eyes before she quickly hides it behind her usual sarcastic mask.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 5) + 1>>
<<silently>>
<<set $openWorldGirls.kenzie.dailyInteractions.smoke += 1>>
<<set $openWorldGirls.kenzie.love += $openWorldGirls.kenzie.interactions.smoke.stats.love>>
<<set $openWorldGirls.kenzie.lust += $openWorldGirls.kenzie.interactions.smoke.stats.lust>>
<<set $openWorldGirls.kenzie.corruption += $openWorldGirls.kenzie.interactions.smoke.stats.corruption>>
<<set $openWorldGirls.kenzie.rebellion += $openWorldGirls.kenzie.interactions.smoke.stats.rebellion>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
kenzie: "God, I needed this. My mom would kill me if she knew I smoked. You're not gonna tell her, are you?",
player: "Your secret's safe with me."
},
{
kenzie: "Want a drag? It's just a cigarette... mostly. Don't be a square.",
player: "Sure, why not. Don't mind if I do."
},
{
kenzie: "This is my one moment of peace. Just me and my bad habits. Don't make it weird.",
player: "I won't. I get it."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.kenzie.face" alt="Kenzie's Face">
</div>
<div class="dialog-text kenzie">
<<= _randomDialogue.kenzie >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _imagePath to "img/chars/kenzie/smoke/kenzie_smoke_" + _randomNumber + ".webp">>
<img @src="_imagePath" alt="Kenzie smoking" style="max-width: 580px; border-radius: 8px;">
</div>
<p class="environment-text">
Kenzie takes a long drag from her cigarette, exhaling a cloud of smoke with a look of defiant relaxation. Sharing this forbidden moment seems to lower her guard, just a little.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 4) + 1>>
<<silently>>
<<set $openWorldGirls.jenna.dailyInteractions.talk += 1>>
<<set $openWorldGirls.jenna.love += $openWorldGirls.jenna.interactions.talk.stats.love>>
<<set $openWorldGirls.jenna.loneliness += $openWorldGirls.jenna.interactions.talk.stats.loneliness>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
jenna: "Oh, hello. I was just... thinking about my to-do list for the day.",
player: "You seem very organized."
},
{
jenna: "It's so quiet in this house sometimes, isn't it? I almost forget what it's like to have someone to talk to.",
player: "It must get pretty lonely."
},
{
jenna: "Just trying to stay busy. It's the best way to make the time pass faster.",
player: "I get that. Keeping a routine helps."
},
{
jenna: "It's... nice to see another person. Breaks up the monotony of the day.",
player: "I'm happy to provide a distraction."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.jenna.face" alt="Jenna's Face">
</div>
<div class="dialog-text jenna">
<<= _randomDialogue.jenna >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/jenna/talk/jenna_talk_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
Jenna offers a small, polite smile, seeming genuinely appreciative of the simple conversation.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 4) + 1>>
<<silently>>
<<set $openWorldGirls.jenna.dailyInteractions.flirt += 1>>
<<set $openWorldGirls.jenna.love += $openWorldGirls.jenna.interactions.flirt.stats.love>>
<<set $openWorldGirls.jenna.lust += $openWorldGirls.jenna.interactions.flirt.stats.lust>>
<<set $openWorldGirls.jenna.corruption += $openWorldGirls.jenna.interactions.flirt.stats.corruption>>
<<set $openWorldGirls.jenna.loneliness += $openWorldGirls.jenna.interactions.flirt.stats.loneliness>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
jenna: "You've been working out, haven't you? It's... noticeable. In a good way.",
player: "Just trying to keep up. You set a high bar."
},
{
jenna: "It's been a while since I've had a man around the house who's... so attentive.",
player: "I'm happy to help out wherever I can."
},
{
jenna: "My husband always says I shouldn't be so friendly with strangers... but you don't feel like a stranger.",
player: "I'm glad you feel comfortable around me."
},
{
jenna: "You have a nice smile. It... brightens up the room.",
player: "You've got a great one too."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.jenna.face" alt="Jenna's Face">
</div>
<div class="dialog-text jenna">
<<= _randomDialogue.jenna >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<video width="100%" height="auto" style="max-width: 580px; border-radius: 8px;" controls autoplay loop muted playsinline>
<<set _videoPath to "img/chars/jenna/flirt/jenna_flirt_" + _randomNumber + ".mp4">>
<source @src="_videoPath" type="video/mp4">
Your browser doesn't support embedded videos.
</video>
</div>
<p class="environment-text">
A faint blush colors her cheeks, and she quickly looks away, a shy but pleased smile playing on her lips.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _randomNumber to Math.floor(Math.random() * 3) + 1>>
<<silently>>
<<set $openWorldGirls.jenna.dailyInteractions.coffee += 1>>
<<set $openWorldGirls.jenna.love += $openWorldGirls.jenna.interactions.coffee.stats.love>>
<<set $openWorldGirls.jenna.loneliness += $openWorldGirls.jenna.interactions.coffee.stats.loneliness>>
<</silently>>
<div class="game-container">
<<set _dialogueOptions to [
{
jenna: "I just made a fresh pot of coffee. Would you like a cup? It's nice to share it with someone.",
player: "I'd love one, thanks."
},
{
jenna: "It's funny, I always make a full pot out of habit... even though it's just me. I'm glad you're here to have some.",
player: "My pleasure. It smells great."
},
{
jenna: "Care for some coffee? It's the one thing I can't start my day without... well, that and my yoga.",
player: "Definitely. Thanks, Jenna."
}
]>>
<<set _randomDialogue to _dialogueOptions.random()>>
<div class="dialog-container">
<div class="dialog-image">
<img @src="$openWorldGirls.jenna.face" alt="Jenna's Face">
</div>
<div class="dialog-text jenna">
<<= _randomDialogue.jenna >>
</div>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/player/player_face.png" alt="Player Face">
</div>
<div class="dialog-text player">
<<= _randomDialogue.player >>
</div>
</div>
<div class="environment-container">
<div class="environment-image">
<<set _imagePath to "img/chars/jenna/coffee/jenna_coffee_" + _randomNumber + ".jpg">>
<img @src="_imagePath" alt="Jenna with a cup of coffee" style="max-width: 580px; border-radius: 8px;">
</div>
<p class="environment-text">
She pours you a cup, her movements graceful. Sitting down with you for a simple cup of coffee seems to visibly ease some of the tension in her shoulders.
</p>
</div>
<br>
<div class="menu-buttons">
<<link "Leave Interaction">>
<<goto $locationName>>
<</link>>
</div>
</div><<set _tenseDinnerStage to _tenseDinnerStage || 0>>
<<set _carolResponse to _carolResponse || "">>
<div class="game-container spy-scene-container">
<!-- ===== STAGE 0: THE SILENCE IN THE KITCHEN ===== -->
<<if _tenseDinnerStage === 0>>
<div class="changing-scene-stage" id="ctd-stage-0">
<div class="environment-container">
<div class="environment-image">
<img src="img/layout/kitchen/kitchen_small.jpg" alt="The kitchen at night">
</div>
<p class="spy-narrative">
You enter the kitchen. The groceries you bought earlier are out, ingredients for the dinner she's preparing. Carol is at the stove, but the cheerful energy from the weekend is gone. Her movements are stiff, efficient. The only sounds are the sharp chop of a knife against the cutting board and the sizzle from a hot pan. The air is heavy.
</p>
</div>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_mad.png" alt="Carol's neutral face">
</div>
<div class="dialog-text carol">
Dinner's almost ready. Set the table, please.
</div>
</div>
<p class="spy-narrative">
Her tone is polite, but cold. The "please" feels like a formal command, not a request.
</p>
<div class="menu-buttons" style="margin-top: 20px;">
<<link "Set the table and wait.">>
<<set _tenseDinnerStage = 1>>
<<replace "#ctd-stage-0">><<include "CarolTenseDinner">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== STAGE 1: THE SILENT DINNER & PLAYER'S CHOICE ===== -->
<<if _tenseDinnerStage === 1>>
<div class="changing-scene-stage" id="ctd-stage-1">
<div class="environment-container">
<div class="environment-image">
<img src="img/chars/carol/eating/carol_eating_mad.png" alt="Carol eating dinner, looking serious">
</div>
<p class="spy-narrative">
You sit down to eat. The food is good, but the silence is deafening, broken only by the clinking of silverware on plates. Carol eats methodically, her eyes fixed on her food. Any attempt you make to catch her eye is immediately deflected. The silence becomes unbearable. You have to say something.
</p>
</div>
<div class="scene-options">
<<link `"The food's great, Aunt Carol."`>>
<<set _carolResponse = "neutral">>
<<set _tenseDinnerStage = 2>>
<<replace "#ctd-stage-1">><<include "CarolTenseDinner">><</replace>>
<</link>>
<<link `"How was your day?"`>>
<<set _carolResponse = "cold">>
<<set _tenseDinnerStage = 2>>
<<replace "#ctd-stage-1">><<include "CarolTenseDinner">><</replace>>
<</link>>
<<link `"You're quiet today... thinking about something?"`>>
<<set _carolResponse = "negative">>
<<set _tenseDinnerStage = 2>>
<<replace "#ctd-stage-1">><<include "CarolTenseDinner">><</replace>>
<</link>>
</div>
</div>
<</if>>
<!-- ===== STAGE 2: THE REACTION AND ESCAPE ===== -->
<<if _tenseDinnerStage === 2>>
<div class="changing-scene-stage" id="ctd-stage-2">
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_mad.png" alt="Carol's mad/annoyed face">
</div>
<div class="dialog-text carol">
<<if _carolResponse is "neutral">>
"Thanks."
<<elseif _carolResponse is "cold">>
"Fine. The usual."
<<elseif _carolResponse is "negative">>
"I'm just tired. And hungry. Can we please just eat in peace?"
<</if>>
</div>
</div>
<p class="spy-narrative">
<<if _carolResponse is "neutral">>
She nods once, without looking up. The conversation dies instantly.
<<elseif _carolResponse is "cold">>
She finally looks at you, but her gaze is distant. It's clear she doesn't want to elaborate.
<<elseif _carolResponse is "negative">>
She puts her fork down with a sharp clatter. The rebuke is clear. She's building a wall.
<</if>>
</p>
<p class="spy-narrative">
As soon as she finishes eating, Carol stands up abruptly.
</p>
<div class="dialog-container">
<div class="dialog-image">
<img src="img/chars/carol/face/carol_face_mad.png" alt="Carol's mad/annoyed face">
</div>
<div class="dialog-text carol">
I... have some things to take care of before bed. Good night.
</div>
</div>
<p class="spy-narrative">
It's an obvious excuse. She takes her plate to the sink and leaves the kitchen quickly, leaving you alone at the table. The feeling of distance and rejection is palpable. You know that regaining that intimacy will be a challenge.
</p>
<div class="menu-buttons" style="margin-top: 30px;">
<<link "Finish your meal in silence.">>
<<set $scenes["CS014"].status to 1>>
<<set $auntCarol.love += 5>>
<<set $auntCarol.lust -= 5>>
<<goto "Kitchen">>
<</link>>
</div>
</div>
<</if>>
</div>
<<unset _tenseDinnerStage, _carolResponse>><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="relapse-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="thank-you-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="poolside-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="rubicon-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="afternoon-delight-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="romantic-night-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="riding-creampie-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="final-taboo-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="overheard-call-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="power-shift-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="letter-disposed-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="vulnerable-at-bar-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="blackmail-handjob-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="caught-masturbating-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="gratitude-hj-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="daring-blowjob-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="deepthroat-facefuck-scene-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-towel-encounter-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-yoga-glimpse-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-poolside-thanks-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-energy-release-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-chakra-checkup-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-deeper-alignment-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="valerie-primal-energy-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-yoga-glimpse-content"></div>
</div>
<!-- Estrutura da Lightbox (Galeria de Imagens) -->
<div id="image-lightbox-overlay" class="lightbox-overlay" style="display: none;">
<span class="lightbox-close" onclick="window.closeLightbox()">×</span>
<span class="lightbox-nav prev" onclick="window.changeLightboxImage(-1)">❮</span>
<div class="lightbox-content">
<img id="lightbox-image" src="" alt="Enlarged yoga pose">
</div>
<span class="lightbox-nav next" onclick="window.changeLightboxImage(1)">❯</span>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-photoshoot-content"></div>
</div>
<!-- Estrutura da Lightbox (Reutilizada) -->
<div id="image-lightbox-overlay" class="lightbox-overlay" style="display: none;">
<span class="lightbox-close" onclick="window.closeLightbox()">×</span>
<span class="lightbox-nav prev" onclick="window.changeLightboxImage(-1)">❮</span>
<div class="lightbox-content">
<img id="lightbox-image" src="" alt="Enlarged photoshoot picture">
</div>
<span class="lightbox-nav next" onclick="window.changeLightboxImage(1)">❯</span>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-trying-clothes-content"></div>
</div>
<!-- Estrutura da Lightbox (Reutilizada) -->
<div id="image-lightbox-overlay" class="lightbox-overlay" style="display: none;">
<span class="lightbox-close" onclick="window.closeLightbox()">×</span>
<span class="lightbox-nav prev" onclick="window.changeLightboxImage(-1)">❮</span>
<div class="lightbox-content">
<img id="lightbox-image" src="" alt="Enlarged photoshoot picture">
</div>
<span class="lightbox-nav next" onclick="window.changeLightboxImage(1)">❯</span>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-bathroom-spy-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-robe-drop-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-pool-show-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="jenna-handjob-content"></div>
</div><div class="game-container mission-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da missão aqui -->
<div id="tiffany-spot-me-content"></div>
</div><div class="game-container spy-scene-container">
<!-- O JavaScript irá renderizar dinamicamente o conteúdo da cena aqui -->
<div id="tiffany-locker-room-content"></div>
</div>